Я бы рискнул предположить, что ваши пакеты блокируются брандмауэром где-то на их пути. Я бы начал с открытия соответствующих исходящих и входящих портов UDP в брандмауэрах клиента и сервера соответственно.
Или ваш сервер может находиться за NAT шлюзом, и вам нужно настроить переадресацию портов правил, чтобы он мог принимать любые пакеты. Например, большинство маршрутизаторов ADSL фактически настроены в качестве шлюза NAT.
Другая потенциальная проблема - выбор вашего порта:
Вы привязываете клиента к определенному локальному порту. В этом нет необходимости - пусть ОС сама выбирает свободный порт. Это также устранит возможность попытки использовать порт, который уже используется.
Вы используете порты в диапазоне [0-1023]. Этот диапазон портов обычно зарезервирован для общеизвестных служб - фактически, в большинстве Unix-подобных систем (например, Linux) вы не можете привязать прослушивающий порт в этом диапазоне без привилегий root. В результате, довольно много интернет-провайдеров будут фильтровать этот диапазон портов в своем брандмауэре, предположительно для защиты своих пользователей.
Без дополнительной информации о сетях, соединяющих клиента с сервером, довольно сложно дать более конкретный ответ.
PS: Нет необходимости воссоздавать объект InetAddress
на каждой итерации цикла - сделайте это один раз заранее ...
PS.2: Обычно компьютер, который отправляет первый пакет в сеансе UDP, считается клиентом , поскольку он также может существовать без фиксированного адреса. В этом отношении ваше назначение ролей клиент / сервер меняется на противоположное. Поэтому, читая мои пункты выше, вам придется изменить спецификации клиента / сервера, чтобы они применились к вашему коду ...