【问题标题】:pcap_loop and pcap_dispatch Differencepcap_loop 和 pcap_dispatch 的区别
【发布时间】:2011-02-06 23:54:17
【问题描述】:

pcap_loop 和 pcap_dispatch 到底有什么区别?

【问题讨论】:

    标签: networking wireshark libpcap packet-sniffers sniffing


    【解决方案1】:

    手册对这一点的描述非常好(我是板着脸说,保证)。来自man pcap_loop

       pcap_loop() processes packets from a  live  capture  or  ``savefile''
       until  cnt  packets  are  processed,  the  end of the ``savefile'' is
       reached when reading from a ``savefile'', pcap_breakloop() is called,
       or  an  error  occurs.   It  does  not return when live read timeouts
       occur.  A value of -1 or 0 for cnt is equivalent to infinity, so that
       packets are processed until another ending condition occurs.
    
       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 ``save‐
       file'' 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  pro‐
       cessed. 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 reading a ``save‐
       file''.
    

    这有点像文字墙,所以让我们分解一下。

    两个功能

    • 处理来自实时捕获或“保存文件”的数据包,直到出现以下任一情况:
      • 达到指定的计数
      • 已到达“保存文件”的末尾
      • pcap_breakloop() 被调用
      • 发生错误
    • 认为 -1 或 0 实质上意味着“处理无限数量的数据包” - 即,直到出现另一个结束条件。 (建议使用 -1 以实现与旧版本的互操作性,稍后在手册中介绍)

    pcap_dispatch() 单独

    • 在达到当前缓冲的数据包结束后,在进行实时捕获时也会返回(换句话说,可以更频繁地返回,因为指定的计数不是最小值)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-07
      • 2011-10-20
      • 2020-01-23
      相关资源
      最近更新 更多