我正在尝试使用pcaplib监控当前活动互联网连接的数据包。但我不确定如何才能找到当前有效的互联网连接。我知道pcap_findalldevs()
将返回可用网络设备列表。但用户可能会使用en0,en1甚至VPN连接。我想知道如何找到当前的互联网连接以及如何在更改时收到通知?
答案 0 :(得分:1)
OS X(或许多其他操作系统)中没有任何内容明确指出哪个接口是“当前的Internet连接”。
最接近的是默认路由的接口;有代码可以做到这一点,但它有点复杂。
在大多数情况下,如果不是所有情况,可能会给出正确答案的一种更简单的方法是获取pcap_findalldevs()
的输出并查找具有AF_INET或AF_INET6地址的第一个接口(不仅仅是查找具有任何地址的第一个接口,如在OS X和* BSD中,可能包含链路层地址)并且没有设置PCAP_IF_LOOPBACK。