Потеря пакетов Python с использованием UDPPython

Программы на Python
Anonymous
Потеря пакетов Python с использованием UDP

Сообщение Anonymous »


Это странно.

У меня есть микроконтроллер в локальной сети, который отправляет данные UDP по широковещательному адресу (192.168.1.255). Он отправляет ответ на команды (также отправленные через UDP), а затем генерирует дейтаграмму каждые 5 секунд.

Команды отправляются по UDP на номер 23451, а данные и ответ на команду принимаются на номер 12345.

Используя стороннюю программу, я могу видеть команды, ответы и данные, полученные на моем компьютере.

Однако с помощью приведенного ниже кода я всегда могу получить данные, но никогда не смогу получить ответ на команду.

импортировать сокет ответ_порт = 12345 response_sock = socket.socket(socket.AF_INET, # Интернет сокет.SOCK_DGRAM) # UDP response_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # Установите для параметра SO_REUSEADDR значение True, чтобы мы не получали ошибку при попытке выполнить привязку к тому же порту из другой программы response_sock.bind(('', порт_ответа)) пока правда: датаграмма, адрес = response_sock.recvfrom(1024) print(адрес, ":",датаграмма) Ответ на команду (который я не могу получить) выглядит так: UDP-SPI_0002 в ascii или 55 44 50 2D 53 50 49 5F 30 30 30 32 00 в шестнадцатеричном формате

Данные (которые я могу получить) выглядят так: 33 36 31 34 19 00 0B 00 06 00 02 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 15 18 00 00 F1 00 60 02 E2 64 44 58 D9 46 69 3F A5 29 EA 3F E8 A4 F5 3F 00 00 7E 00 37 00 07 00 00 00 79 02 10 4А

Проблема, с которой я сталкиваюсь, заключается в том, что данные всегда принимаются, но ответ на команду никогда не получен. Что я пробовал:
[*]Отключить передачу данных и отправлять только ответы на команды, безрезультатно. [*]Вставьте задержки между настройкой recvfrom и отправкой команды [*]Поместите recvfrom в отдельный поток
Это локальная сеть, без других компьютеров и доступа к Интернету. Для подтверждения я могу достоверно видеть данные и ответ на команду другого инструмента (https://udp-test-tool.informer.com/). Я использую Windows 10, Python 3.12

Вернуться в «Python»