У меня возникла очень странная проблема.
Мой код получил только пакеты 87266
, но в Wireshark есть пакеты 167917
Это мой код (python3):
counter = 0
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.settimeout(10)
sock.bind(('', 57130))
while True:
try:
data, _ = sock.recvfrom(4096)
counter += 1
except socket.timeout:
break
print(counter)
exit(0)
Вывод 87266
Но в Wireshark я получил 167917
пакетов
Я пометил все пакеты, которые dstport == 57130
и экспортировал их в файл, затем открыл этот файл, так что эти No.
следуют друг за другом.
Моя ОС Windows 7
Я не программист на Python, но что произойдет, если вы увеличите 4096 до чего-то большего? 8192, 16384, ...? Возможно, Python не может обрабатывать пакеты достаточно быстро, а ваш буфер слишком мал для скорости потока пакетов? Глядя на временные метки, кажется, что все пакеты прибывают в течение очень короткого промежутка времени друг от друга.