Проблема
Я написал скрипт, который обнюхивает пакеты с хоста, однако я обнюхиваю пакеты в непрерывном режиме и хотел бы прекратить обнюхивание по тайм-ауту. Я написал следующий код, чтобы остановить перехват пакетов, но, похоже, он не останавливается, когда время явно превышает тайм-аут. Что я могу здесь делать не так?
import time
import pyshark
prog_start = time.time()
capture = pyshark.LiveCapture(interface='en0')
capture.sniff(timeout=10)
start_time = capture[0].frame_info.time_epoch
end_time = capture[-1].frame_info.time_epoch
print("Capture lasted:", float(end_time) - float(start_time))
pkt_num = 0
for pkt in capture:
pkt_num += 1
print("Time", time.time() - prog_start, "Pkt#", pkt_num)
Затем мы получаем этот вывод с тысячами дополнительных пакетов в секунду после того, как перехват должен был прекратиться:
Capture lasted: 9.148329019546509
Time 10.346031188964844 Pkt# 1
Time 10.348641157150269 Pkt# 2
Time 10.351708889007568 Pkt# 3
Time 10.353564977645874 Pkt# 4
Time 10.35555100440979 Pkt# 5
...
Вопрос
Почему PyShark продолжает перехватывать пакеты после тайм-аута?
capture = pyshark.LiveCapture(interface='\\Device\\NPF_{9342EE7E-9981-4554-87AE-06666A717864}', display_filter='bitcoin')
capture.sniff(timeout=125)
start_time = capture[0].frame_info.time_epoch
end_time = capture[-1].frame_info.time_epoch
for pkt in capture:
print(str(pkt))
Когда я использую тайм-аут, как вы упомянули, он постоянно зацикливается даже после тайм-аута. - person Sajan Maharjan   schedule 10.10.2019