Странность первая. На компьютере написана простейшая консольная программа, которая используя Winsock должна отправить UDP пакет. Сокет на компьютере запускается, опция широковещания (SO_BROADCAST) устанавливается, отправка через sendto проходит без ошибок, адрес получателя inet_addr("255.255.255.255") но Wireshark на том же компьютере ни чего не видит, где этот пакет теряется не понятно, в бандмауэре работа моей программы разрешена. Для обхода этой проблемы пришлось использовать локальный широковещательный адрес, для моей сети это "192.168.0.255", при таком адресе получателя пакет отправляется, т.е. Wireshark его показывает, хоть и не идентифицирует как широковещательный, хотя в Ethernet-заголовке адрес из FF, т.е. широковещательный. Другие широковещательные пакеты на адрес 255.255.255.255 Wireshark показывает.
Странность вторая. При отправке с компьютера используется sendto, которое в качестве порта отправки берет первый свободный номер. Порт получателя у меня фиксированный. В программе на контроллере у меня прием настроен так: conn = netconn_new(NETCONN_UDP); netconn_bind(conn, IP_ADDR_ANY, UDP_PORT); Однако приема UDP нет. Прием UDP пакета появляется только если я сделаю так, что бы на компьютере номер порта отправки стал таким же как номер порта получателя, тогда прием широковещательных пакетов начинает работать. Почему так мне не понятно.
Вроде бы не делаю ни чего хитрого, а получаю странный результат.