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