2009-05-12 5 views
3

Я пытаюсь создать клиентское серверное приложение на Java с использованием UDP. Проблема заключается в том, когда клиент подключается к серверу, сервер регистрирует клиента, а другое приложение пытается использовать clientIP и clientPort для подключения к клиенту; клиент не может получить какие-либо данные.udp клиент недоступен из другого приложения

Я смог воссоздать DatagramSocket для подключения к клиенту, используя его IP и порт, но когда это делается с помощью другого приложения, связь не достигается.

Я хотел бы упомянуть, что порт, который я слушаю на сервере, отличается от порта, который использует серверное приложение.

Как мы можем достичь этого сообщения?

Пожалуйста, помогите мне. Спасибо.

ответ

0

Возможно, я пропустил этот пункт, но я думаю, что для того, чтобы ваш клиент мог принимать попытки подключения другим приложением, запущенным на вашем сервере, вам нужно реализовать в своем компьютере некоторый модуль прослушивания (серверная часть, принимающая входящие соединения). Здесь вы можете найти несколько полезных примеров: http://www.java2s.com/Code/Java/Network-Protocol/UDP.htm

1

Ваш комментарий «когда клиент подключается к серверу ..» заставило меня задуматься, если вы использовали connect() на DatagramSocket клиента. Если это так, не вызывайте connect() в сокете. UDP - это протокол без подключения, а connect() не требуется. Вызывая connect() на сокете UDP, сокет может отправлять/получать данные только на хост, указанный с помощью connect().

Если это не так, то только причина, по которой я могу думать, заключается в том, что на вашем клиентском компьютере может быть включен брандмауэр, или между вашим клиентом и сервером или другими узлами есть NAT/Firewall. Проверьте с Wireshark, получает ли ваш клиент какие-либо пакеты из другого приложения.

Надеюсь, это поможет.

Смежные вопросы