我正在尝试在以太网网络上收集2级数据包。该网络上唯一发生的事情是设备正在吐出ieee1722 / AVB帧。
我已经安装了WinPcap,并从most basic example开始。每次对pcap_next_ex
的调用都返回0,表示没有收到任何数据包。我打开了Wireshark,开始监视该接口 - 然后,我的程序开始接收数据包。
我在两个接口上试过这个,内置的Intel I218-LM和一个廉价的Ethernet-To-USB加密狗。连接到AVB网络的两个接口都不返回帧,直到我在该接口上的Wireshark中开始监视。当没有得到Wireshark的帮助时,两者都会在连接到该网络时显示随机办公室以太网流量。
我还尝试在pcap_set_datalink
之后调用pcap_open
将链接类型设置为DLT_EN10MB
(无更改)和DLT_RAW
(函数返回错误)。其他类型似乎都不适合我。
当然,Wireshark本身使用WinPcap,但我无法弄清楚Wireshark正在做些什么才能使这项工作成功。这是怎么回事?
更新:我注意到我的应用程序退出后,它也停止了对Wireshark的捕获。我可以同时激活两个,但我的应用程序需要先开始捕获。我发现Wireshark在调用pcap_finalldevs_ex
或pcap_open_live
后停止捕获。我无法找到Wireshark如何初始化与我不同的东西,尽管由于所有条件启用/禁用块,它们的代码很难遵循。
答案 0 :(得分:0)
事实证明我安装了一个非常旧版本的Nmap for Windows,其中包含可用于代替winpcap的npcap。我卸载了npcap,重新启动了,现在我的应用程序运行正常。