我正在尝试使用pcaplib监控当前活动互联网连接的数据包。但我不确定如何才能找到当前活动的互联网连接。我知道pcap_findalldevs()会返回可用的网络设备列表。但用户可能会通过它们使用en0、en1甚至VPN连接。我想知道如何找到当前的互联网连接,以及当它发生变化时如何通知我?
发布于 2012-09-29 03:45:59
在OS (或许多其他操作系统)中,没有任何明确的指示哪个接口是“当前的Internet连接”。
最接近的是默认路由的接口;有一些代码可以做到这一点,但它有点复杂。
一种更简单的方法可能会在大多数情况下给出正确的答案,那就是获取pcap_findalldevs()的输出,并查找具有AF_INET或AF_INET6地址的第一个接口(不要只查找具有任何地址的第一个接口,因为在OS X和*BSD中,可以包括链路层地址),并且没有设置PCAP_IF_LOOPBACK。
https://stackoverflow.com/questions/12621552
复制相似问题