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