我在 C 应用程序中使用 libpcap(和 Windows 上的 winpcap)来监控网络流量。我需要区分每个网络适配器上的上传和下载流量,以生成连接速度统计信息,但库使用的过滤器表达式似乎不太容易支持这一点(即没有“传入”/“传出”运算符)。
我考虑过的一种方法是查询每个适配器的 IP 地址,然后使用过滤器,例如src host 1.2.3.4
(测量上传)和dst host 1.2.3.4
(测量下载)。
我的问题是:
是否有比上述更好/更简单的方法(让我对每个适配器使用相同的过滤器表达式的方法会很好)?
如果上述方法是可行的方法,那么单个适配器是否有可能具有多个关联的 IP 地址?我问的原因是pcap_addr
保存单个适配器(in struct pcap_if
)地址详细信息的结构有一个“下一个”成员,表明这是可能的。