为什么pcap_dispatch
(count
= 10)只返回1个数据包?
如果我不做任何事情,它会等待然后显示1个数据包,但如果我点击一个链接,它会立即停止并显示1个数据包。
我是否应该有这样的循环?:
for i in range(0,10):
p.dispatch(10, savePacket)
这是python,但我在C中遇到了同样的问题。
答案 0 :(得分:1)
从手册页:
pcap_dispatch() processes packets from a live capture or ``savefile'' until cnt packets are processed, the end of the current bufferful of packets is reached when doing a live capture, the end of the ``savefile'' is reached when reading from a ``savefile'', pcap_breakloop() is called, or an error occurs. Thus, when doing a live capture, cnt is the maximum number of packets to process before returning, but is not a minimum number; when reading a live capture, only one bufferful of packets is read at a time, so fewer than cnt packets may be processed. A value of -1 or 0 for cnt causes all the packets received in one buffer to be processed when reading a live capture, and causes all the packets in the file to be processed when read‐ ing a ``savefile''.
请注意以下内容:"因此可能会处理少于cnt
个数据包" - 即它是pcap实现的内容
关于Python的注释:我不知道python实现是做什么的,但是在C中,无论如何都要为每个数据包调用一次回调。