Java Socket Программирование - PullRequest
2 голосов
/ 31 марта 2009

Java Socket Program не работает для WAN

Я написал программу сокета TCP IP, которая прекрасно работает в моей локальной сети. Один из моих друзей в Бангалоре, он управлял сервером, а я управлял клиент с именем хоста IP моего друга. В этом случае мой программа сокета не работает.

Ответы [ 5 ]

6 голосов
/ 31 марта 2009

Вы сказали, что ваша программа пытается подключиться к узлу 192.168.1.107 через порт 46216.

Префикс

192 указывает, что это адрес класса C и является частным. Подключение вашей программы к этому заставит ее остаться в локальной сети в поисках этого узла. Вам нужно будет найти IP-адрес вашего роутера (вы можете использовать http://whatismyip.org/, чтобы узнать это). Затем перейдите в настройки маршрутизатора и перенаправьте порт с 46216 на 192.168.1.107 (ваш узел) или, что еще лучше, на ваш MAC-адрес, который не подлежит изменению (в случае, если на вашем маршрутизаторе работает DHCP).

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

2 голосов
/ 31 марта 2009

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

1 голос
/ 16 апреля 2010

Похоже, что IP-адрес, который вы указали, является локальным, а не общедоступным интернет-адресом. Если вы ищете 192.x.x.x, вы не попадете в «Интернет», но будете ограничены вашим маршрутизатором.

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

0 голосов
/ 14 мая 2015

IP-адрес компьютера, на котором установлена ​​серверная программа, недоступен. 192.x.x.x ip означает (класс C), что это для локальной подсети. Вам необходимо изменить IP-адрес вашего сетевого адаптера, чтобы маршрутизатор мог направить его через Интернет.

0 голосов
/ 31 марта 2009

Вы можете использовать реализацию STUNT или другого NAT Traversal .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...