Пакеты UDP появляются в wireshark, но не принимаются программой
Я пытаюсь прочитать пакеты UDP, отправленные ПЛИС с моим компьютером. Они отправляются на порт 21844 и на IP-адрес 192.168.1.2 (который является IP-адресом моего компьютера). Я вижу пакет в wireshark, у них нет ошибок. Однако когда я запускаю этот маленький скрипт python, он получает только очень небольшую часть всех пакетов, также в зависимости от того, работает wireshark или нет.
import socket
import sys
HOST, PORT = "192.168.1.2", 21844
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((HOST,PORT))
received ,address= sock.recvfrom(2048)
print address
Я использую windows 7 с Norton Internet Security, где я разрешаю весь трафик в брандмауэре для FPGA IP, а также для python. Та же программа на компьютере под управлением Windows XP также ничего не получает...
Спасибо за любую помощь!
2 ответа:
Стек TCP/IP вашей ОС не будет хранить эти пакеты для вас вечно. Ваш скрипт выглядит как нечто, что очень сильно зависит от , Когда он запускается. Попробуйте
recvfrom
в цикле и запустить скрипт в фоновом режиме. Затем начните отправлять пакеты с вашего ПЛИС.Для дополнительного удобства изучите Модуль
SocketServer
из stdlib Python.