为什么pcap_dispatch只返回1个数据包?

时间:2015-01-28 18:00:22

标签: python c pcap

为什么pcap_dispatchcount = 10)只返回1个数据包?

如果我不做任何事情,它会等待然后显示1个数据包,但如果我点击一个链接,它会立即停止并显示1个数据包。

我是否应该有这样的循环?:

for i in range(0,10):
        p.dispatch(10, savePacket)

这是python,但我在C中遇到了同样的问题。

1 个答案:

答案 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中,无论如何都要为每个数据包调用一次回调。