У меня есть 2 коробки: - встроенное устройство (ARM Omap с linux), которое я назову " Omap ".- ПК (может быть Windows или Linux).
Сценарий 1
Оба блока находятся в одной сети (пример: мой офис).Omap получает свой адрес от сервера DHCP (например: 192.168.10.110).У ПК всегда один и тот же адрес (например, 192.168.10.104).Я могу успешно обмениваться широковещательными пакетами UDP на любом порту.Успех.
Сценарий 2
2 блока находятся в сети с OUT DHCP-сервером.ПК имеет статический IP-адрес (пример: 10.10.10.20).Omap загружается, ищет DHCP-сервер, не находит его и находится в состоянии, которое я называю «неверный IP-адрес».Теперь ... Широковещательные UDP-пакеты от Omap работают: ПК их видит.Обратное не работает: UDP-пакеты, транслируемые ПК, не видны Omap.Я использую Wireshark на другом ПК, чтобы убедиться, что пакеты отправляются.Провал.
Я пытался изменить IP-адрес Omap (с помощью ifconfig) ... не повезло.
Что мне не хватает?
Чтобы завершить картину, когда Omapв сценарии 2, если я запускаю udhcpc ... он может связаться с сервером DHCP и получить IP-адрес.Я также вижу пакеты с Wireshark.Это означает, что клиент DHCP может транслировать пакеты UDP.(Да, я пытался использовать DHCP-порты 67/68, но он не работает).
Я использую UDP-сокеты Boost C ++ Asio.В частности, я взял многоадресные примеры и заменил их на вещание.
Любая помощь приветствуется.
Спасибо, Бенедетто
PS: Некоторые пояснения.
Устройство Omap является встроенным устройством, и моя цель состоит в том, чтобы клиент не должен был устанавливать его IP-адрес в поле.Вот почему я обмениваюсь широковещательными пакетами с ПК, чтобы получить «хороший» IP-адрес от моего другого программного обеспечения, работающего на ПК (который знает текущую подсеть, даже в сети со статическими IP-адресами и без DHCP-сервера).
По сути, я реализовал очень простой протокол DHCP.ПК может прослушивать пакеты, передаваемые Omap, но не наоборот.