2013-07-17 188 views
0

我寫了一個應用程序,它使用libpcap來捕獲數據包。但是應用程序只能捕獲幾個數據包,流量大約是幾kbps。但是如果打開tcpdump,捕獲的流量將超過10Mbps。當tcpdump關閉時,捕獲的流量再次下降到幾kbps。使用libpcap的應用程序只能捕獲打開tcpdump時的所有數據包,或者只捕獲少量數據包,請問如何解決?謝謝

任何人都知道爲什麼?非常感謝你。

+0

代碼在哪裏? –

+0

抱歉,代碼不在此計算機上。我使用pcap_loop捕獲數據包,就像tcpdump一樣。 – happy

回答

0

如果你打電話給pcap_open_live(),你可能會傳遞0作爲「promisc」參數。如果您打電話給pcap_create()pcap_activate(),那麼您可能不會在這些呼叫之間調用(或者正在通過「promisc」參數爲0)。

也就是說,您可能未打開混雜模式,因此您的計算機僅捕獲進出機器的流量,而不捕獲網絡上的其他流量。默認情況下,Tcpdump會打開混雜模式,因此,在運行時,您捕獲的適配器(可能與tcpdump捕獲的適配器相同)處於混雜模式,您會看到網絡上的其他流量。

+0

謝謝你的回覆。我使用pcap_open_live,但我傳遞1作爲「promisc」參數。 – happy

+0

所以你正在做'pcap_open_live({adapter},65535,1,1000,errbuf)',所以第三個參數是1? – 2013-07-18 23:31:53

+0

是的,第三個參數是1。 – happy