【发布时间】:2010-12-05 10:09:55
【问题描述】:
我正在使用 libpcap 来嗅探流量。我想在当前活动的网络设备上执行此操作(例如,具有分配 IP 地址的设备等)。最好的方法是什么?我假设我必须执行以下操作:
pcap_findalldevs(&alldevs, errbuf)
获取所有网络设备,然后循环并检查当前处于活动状态的设备。
编辑:以下函数
(pcap_lookupnet(dev, &net, &mask, errbuf)
返回网络设备的网络地址和子网掩码。我在计算机上使用不同的以太网适配器运行了一些测试,当我在未连接到网络的适配器上调用它时,它返回 -1。这会是获得活动界面的防弹方法吗?是否会遗漏任何边缘情况?
【问题讨论】:
-
如果我同时使用两个不同的网络,或者甚至只是连接到同一个网络的两个适配器怎么办?我实际上定期使用这种方案,将适配器分配给不同的进程。
-
回到adirau's answer,如果我在连接了 2 个网络适配器的情况下运行 netstat -nr (unix),它会显示默认路由的两个适配器吗?
标签: c++ c macos network-programming packet-sniffers