pcap_loop и pcap_dispatch Разница - PullRequest
       75

pcap_loop и pcap_dispatch Разница

11 голосов
/ 07 февраля 2011

В чем конкретно разница между pcap_loop и pcap_dispatch?

1 Ответ

18 голосов
/ 09 февраля 2011

Руководство описывает это удивительно хорошо (я говорю это с невозмутимым лицом, обещаю).От 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 () отдельно

  • Также возвращается после окончаниятекущий пакет пакетов достигается при выполнении захвата в реальном времени (другими словами, может возвращаться чаще, поскольку указанное число не является минимальным)
...