ISkIN_AI
@ISkIN_AI

Почему клиент на Java не может подключиться к серверу (на сокетах)?

Я написал сервер и клиент на Java (ServerSocket и Socket). При подключении клиента по локалхосту или локальному ip компьютера в сети (192.168.1.8) - все отлично. При попытке подключиться по внешнему ip (белый, статический) или по локальному ip роутера (192.168.1.1) возникает
java.net.ConnectException: Connection refused: connect

Разумеется, я пробросил порты, настроил файерволл и все такое (2ip.ru показывает, что порт открыт), но вот подключаться оно всё равно не хочет...
5ff8d987a8b1e361386019.png
5ff8d991f3986058326997.png
5ff8d9996b7d1237854020.png
  • Вопрос задан
  • 213 просмотров
Решения вопроса 1
@AVSomov
При данной постановке вопроса сложно дать прямой ответ, т.к. нет ни кода ни какого-либо анализа и дампов.

Но можно явно отметить, что работа через сокеты подразумевает, что всю ответственность за правильную работу с сетью программист берёт на себя. Если же есть полная уверенность в корректности кода, тогда стоит обратиться к навыкам отладки или администрирования для сбора дополнительной диагностической информации.

Например, могу предположить, что не корректно ожидается проброс порта через NAT на WAN-интерфейсе, при фактической передаче пакета на LAN-интерфейс роутера. Попробуйте запустить любой сниферр, вероятно в нём увидите, пакет к роутеру на создание соединение, но ответа не будет, т.к. роутеру не ясно куда перенаправлять этот пакет. При этом обращение из внешней сети по белому IP, при настроенном пробросе, покажет, что обмен работает.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
Тут - какая-то обще-системная ошибка, и сообщение java.net.ConnectException: Connection refused: connect
совершенно не несет никакой информации где искать проблему. Давайте переведем задачу из плоскости Java в плоскость сетей и протоколов. Вобщем для начала надо подёргать порт снаружи используя утилиты telnet или netcat и далее уже смотреть по ошибкам.

nc -w 3 -zv tester17.com 33333

когда получишь сообщение : "Connection .... succeded!" - то можно возвращаться в Java кодинг.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы