Я создаю утилиту для связи с некоторым оборудованием, которое поставляется с IP-адресом по умолчанию 10.0.0.1 и маской подсети 255.255.255.0. Аппаратное обеспечение отвечает на сообщения UDP с тем же IP-адресом и портом, с которого они были отправлены (а не с порта, полученного на). У меня есть настройка сокета для отправки широковещательного UDP-сообщения, а затем прослушивания ответов с любого IP.

Проблема, с которой я сталкиваюсь, заключается в том, что когда мой компьютер с Windows 7 использует IP-адрес, полученный от моего маршрутизатора через DHCP (как и большинство наших пользователей), я получаю ответы только от устройств, ранее настроенных для работы в той же подсети (192.168.1 ,XXX) и ничего не получит от нового устройства по умолчанию 10.0.0.1.

Однако я обнаружил (случайно), что, если я перенастроил Windows с назначенным вручную IP-адресом (10.0.0.2) и без других изменений, я внезапно смог получить сообщения от ВСЕХ устройств из любой подсети. Это заставляет меня думать, что мой код в порядке, но что-то не хватает в отношении того, как DHCP или Windows обрабатывают ответы UDP. Кто-нибудь может пролить некоторый свет на то, что мне нужно сделать, чтобы сделать эту работу?

Заранее спасибо!

РЕДАКТИРОВАТЬ

Настольный ПК подключен к маршрутизатору через проводной сетевой адаптер. Все остальные устройства подключены к одному коммутатору, который также подключен напрямую к маршрутизатору. Когда компьютер настроен в Windows для автоматического получения IP-адреса, он получает 192.168.1.112. Для двух устройств вручную установлено значение 192.168.1.XXX адресов, а третий по умолчанию 10.0.0.1. Устройства не имеют режима DHCP.

Еще одно примечание: независимо от того, используется ли на компьютере DHCP или статический IP-адрес, я подтвердил, что широковещательные сообщения действительно достигают устройства в другой подсети (10.0.0.1). Это подтверждается тем фактом, что устройства должным образом реагируют на команды, которые я посылаю. Проблема полностью заключается в ответе сети на устройство, возвращающемся к моему приложению. Я не знаю, блокирует ли это Windows или мое приложение, но я не думаю, что это маршрутизатор, потому что я могу получать ответы, когда я даю своему компьютеру статический IP, не меняя ничего в сети.

1 ответ1

0

Проблема заключается в вашем оборудовании и в базовой сети, решение состоит в том, чтобы предоставить (или установить) оборудованию IP-адрес той же подсети, к которой вы его подключаете (192.168.xx), и это происходит потому, что устройства в одной подсети Сеть может взаимодействовать друг с другом (поэтому смена адреса 10.xxx работает), но они не могут работать с другими подсетями (10.xxx и 192.168.xx - разные подсети), если вы не установите шлюз по умолчанию. Не поймите меня неправильно, но я советую вам взглянуть на некоторые сетевые материалы (материалы Cisco широко доступны в Интернете), так что вы получите некоторые основы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .