我寫了一個應用程序,它使用libpcap來捕獲數據包。但是應用程序只能捕獲幾個數據包,流量大約是幾kbps。但是如果打開tcpdump,捕獲的流量將超過10Mbps。當tcpdump關閉時,捕獲的流量再次下降到幾kbps。使用libpcap的應用程序只能捕獲打開tcpdump時的所有數據包,或者只捕獲少量數據包,請問如何解決?謝謝
任何人都知道爲什麼?非常感謝你。
我寫了一個應用程序,它使用libpcap來捕獲數據包。但是應用程序只能捕獲幾個數據包,流量大約是幾kbps。但是如果打開tcpdump,捕獲的流量將超過10Mbps。當tcpdump關閉時,捕獲的流量再次下降到幾kbps。使用libpcap的應用程序只能捕獲打開tcpdump時的所有數據包,或者只捕獲少量數據包,請問如何解決?謝謝
任何人都知道爲什麼?非常感謝你。
如果你打電話給pcap_open_live()
,你可能會傳遞0作爲「promisc」參數。如果您打電話給pcap_create()
和pcap_activate()
,那麼您可能不會在這些呼叫之間調用(或者正在通過「promisc」參數爲0)。
也就是說,您可能未打開混雜模式,因此您的計算機僅捕獲進出機器的流量,而不捕獲網絡上的其他流量。默認情況下,Tcpdump會打開混雜模式,因此,在運行時,您捕獲的適配器(可能與tcpdump捕獲的適配器相同)處於混雜模式,您會看到網絡上的其他流量。
代碼在哪裏? –
抱歉,代碼不在此計算機上。我使用pcap_loop捕獲數據包,就像tcpdump一樣。 – happy