Подключение к широковещательному IP-адресу - PullRequest
1 голос
/ 18 декабря 2010

В настоящее время я работаю над простой java-программой, которая должна иметь возможность искать компьютер в локальной сети, на котором запущено мое второе java-приложение, и все это с использованием сети UDP. Одно из этих приложений открывает DatagramSocket и запускает поток, который обрабатывает все входные данные. Другое приложение подключается к широковещательному адресу текущей сети LAN (например, 192.16.0.255), отправляет пакет и принимает ответ. Я не очень знаком с тем, как это работает, но вот что мне интересно:

Если я запускаю два из этих отвечающих приложений, каждое на другом компьютере в той же сети, и запускаю клиентское приложение на другом компьютере, к какому из них оно будет подключаться? Я думал, что он соединится и отправит пакет обоим, но он подключился только к одному из них, а иногда и к одному и тому же.

Не могли бы вы объяснить мне этот вопрос? Буду признателен за это.

1 Ответ

3 голосов
/ 18 декабря 2010

Если я запускаю два из этих отвечающих приложений, каждое на другом компьютере в той же сети, и запускаю клиентское приложение на другом компьютере, к какому из них оно будет подключаться?

Кроме того, UDP не является протоколом без установления соединения.

Я думал, что он соединит и отправит пакет обоим, но он подключен только к одному из них, а иногда и к одному.

UDP - это протокол с потерями, иногда данные поступают в оба, в один или ни в один.Ваш маршрутизатор может быть настроен на попытки направить широковещательный трафик, но обычно он пытается отправить все пакеты всем слушателям.

Кстати: все слушатели должны находиться в подсети класса C 192.168.0.255.Хост с IP-адресом 192.168.1.1 может не видеть этот пакет.

...