使用libpcap的应用程序只能在打开tcpdump时捕获所有数据包,或者只捕获少量数据包,如何解决它?谢谢

时间:2013-07-17 15:21:23

标签: libpcap tcpdump

我编写了一个应用程序,它使用libpcap来捕获数据包。但是应用程序只能捕获几个数据包,流量大约是几kbps。但是如果打开tcpdump,捕获的流量将超过10Mbps。当tcpdump关闭时,捕获的流量再次降至几kbps。

任何人都知道为什么?非常感谢你。

1 个答案:

答案 0 :(得分:0)

如果您正在调用pcap_open_live(),那么您可能会将0作为''promisc''参数传递。如果您正在呼叫pcap_create()pcap_activate(),那么您可能不会在这些呼叫之间调用pcap_set_promisc()(或者正在传递pcap_set_promisc()一个''promisc''参数为0)

即,您可能没有开启混杂模式,因此您的计算机只捕获进出机器的流量,而不是网络上的其他流量。默认情况下,Tcpdump打开混杂模式,因此,当它正在运行时,你正在捕获的适配器(可能是与tcpdump捕获的适配器相同的适配器)处于混杂模式,你会看到您网络上的其他流量。