0

我正在尝试使用 pcaplib 监视当前活动 Internet 连接的数据包。但我不确定如何找到当前活动的互联网连接。我知道pcap_findalldevs()会返回可用网络设备的列表。但用户可能会使用 en0、en1 甚至是 VPN 连接。我想知道如何找到当前的互联网连接以及如何在它发生变化时收到通知?

4

1 回答 1

1

OS X(或许多其他操作系统)中没有任何内容明确指示哪个接口是“当前的 Internet 连接”。

最接近的是默认路由的接口;有代码可以做到这一点,但它有点复杂。

在大多数情况下(如果不是所有情况)可能会给出正确答案的一种更简单的方法是获取pcap_findalldevs()并查找具有 AF_INET 或 AF_INET6 地址的第一个接口(不要只查找具有任何地址,如在 OS X 和 *BSD 中,可能包括链路层地址)并且没有设置 PCAP_IF_LOOPBACK。

于 2012-09-28T19:45:58.503 回答