我試圖收集我的以太網上的2級數據包。該網絡上唯一發生的事情是設備正在吐出ieee1722/AVB幀。 我已經安裝了WinPcap,並開始使用most basic example。對pcap_next_ex
的每個呼叫返回0,表示沒有收到數據包。我打開了Wireshark,並開始在該接口上進行監視 - 在那裏,我的程序開始接收數據包。WinPcap不會收集任何數據包,直到Wireshark啓動
我試過這兩個接口,內置英特爾I218-LM和廉價的以太網到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是如何初始化與我不同的,儘管他們的代碼由於所有的條件啓用/禁用塊而很難遵循。
我假設您已經查看過Wireshark源代碼,但如果您無法弄清楚Wireshark正在做什麼,那麼您可能需要查看WinDump源代碼?請參閱:https://www.winpcap.org/windump/install/default.htm,具體來說,源代碼位於:https://www.winpcap.org/windump/install/bin/windump_3_9_5/WDumpSrc_3_9_5.zip –
I有 - 這就是讓我嘗試'pcap_set_datalink'的原因。我沒有太緊密地跟隨所有事情,所以我最終會回到那裏。 – flndr
我剛剛嘗試過WinDump,它和我的程序具有相同的行爲 - 在Wireshark中重新啓動捕獲之前沒有數據包。我認爲這意味着我不是一個愚蠢的監督問題。 – flndr