Java UDP проблема - PullRequest
       52

Java UDP проблема

0 голосов
/ 16 сентября 2011

Я использую клиент UDP, который прослушивает многоадресный IP-адрес 230.10.10.10, порт 11111 для сообщений.Если я запускаю клиентский Java-код на том же сервере, что и UDP-вещатель, я могу получить UDP-сообщение.Однако, если я запускаю его на другом сервере в том же домене, я не получаю никаких сообщений.

Я использую Windows Server 2008. Пожалуйста, дайте мне знать, как его отладить?

Ответы [ 3 ]

1 голос
/ 20 сентября 2011

Спасибо за помощь, ребята. Я решил это сейчас. Решением было вызвать метод setInterface () в Слушателе

DatagramSocket datagramSocket = new MulticastSocket(multicastPort);
((MulticastSocket) datagramSocket).setInterface(inetNicAddress);

Вещатель является многосетевым, имеет два IP-адреса, а слушатель имеет один IP-адрес. Так что, когда я устанавливал IP-адрес слушателя в методе setInterface, он работал нормально.

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

1 голос
/ 16 сентября 2011

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

вы можете подключиться с клиентского компьютера к серверу на порту 11111?

0 голосов
/ 17 сентября 2011

Проблема также может быть в TTL многоадресных пакетов.Если это 0, то пакеты могут быть получены только локально.Я бы порекомендовал вам проверять сетевой трафик с помощью такого инструмента, как Wireshark .Если это проблема, увеличьте значение TTL до 32. Вам также может потребоваться установить -Djava.net.preferIPv4Stack=true.

...