2016-12-19 1 views
0

«Полный ip» означает глобальный ip (у меня есть статический) + local ip (192.168.0.xxx - адрес в моей локальной сети). Я написал простой сервер и клиентское приложение, используя java.net.ServerSocket и java.net.Socket относительно. На localhost это работает хорошо. Но мне интересно работать с серверным приложением на компьютере в локальной сети (маршрутизаторе) и подключаться к нему повсеместно с помощью клиентского приложения. Соединение устанавливается следующим образом:Как указать полный IP-адрес на локальный сервер?

Socket socket = new Socket(IP, PORT); 

Я попробовал мой абсолютный статический IP (но это маршрутизатор IP), маршрутизатор IP + локальный IP (192.168.0.100) все это не работает. Как я могу указать полный путь к моему «серверу» в локальной сети маршрутизатора?

+0

Какие проблемы вы столкнулись? что вы подразумеваете под «нерабочим»? – slambeth

+0

Получите ваш общедоступный IP-адрес: https://www.ipify.org или другие сайты поиска whatismyip. Убедитесь, что ваш маршрутизатор перенаправляет пакеты на ваш локальный сервер, возможно, вам придется настроить перенаправление портов с помощью настроек маршрутизатора и правил брандмауэра/iptables, если вы используете Linux на своей локальной машине. –

+0

@slambeth «не работает» означает, что я получаю исключение. Что-то вроде «недействительный ip» –

ответ

1

Я думаю, вы неправильно поняли IP-адреса.

Любой IP-адрес - это всего лишь один IP-адрес. Нет такой вещи, как «относительный» IP-адрес, например, у вас есть относительный путь в файловой системе.

Предположим, что у вас есть внешний вид маршрутизатора IP, скажем, 136.23.75.30. Затем у вас есть локальная подсеть 192.168.x.y, где ваш собственный хост имеет адрес 192.168.1.100, а ваш маршрутизатор имеет адрес 192.168.1.1.

В этой ситуации, когда вы подключаетесь к хосту из своей подсети, вы можете указать адрес хоста в подсети 192.168.1.100.

Однако, если вы подключаетесь из Интернета в целом, единственным IP-адресом, к которому вы можете подключиться, является внешний IP-адрес маршрутизатора, предоставляемый вашим интернет-провайдером. В нашем примере это 136.23.75.30. Любая попытка подключиться к 192.168.1.100 из любого места вне вашей собственной подсети будет идти на неправильный хост или вообще нигде.

Как вы можете выполнить то, что вам нужно? Секрет в конфигурации вашего маршрутизатора. Вам необходимо настроить маршрутизатор для переадресации портов. В принципе, ваш маршрутизатор будет принимать входящее соединение на определенном порту (скажем, 8888) и превратить это соединение в соединение с вашим хостом 192, 168.1.100, например, с тем же портом, 8888.

В другом слова, внешний мир думает, что он подключается к 136.23.75.30, в то время как на самом деле маршрутизатор обеспечивает ответ 192.168.1.100.

Предполагая, что это домашняя настройка, вам нужно получить доступ к экрану администратора маршрутизатора. Вы можете сделать это, поставив «http://192.168.1.1» в адресную строку вашего браузера. После предоставления подходящей проверки подлинности (обычно напечатанной на обратной стороне маршрутизатора) вам нужно найти какую-то вкладку расширенной настройки и искать «Port Forwarding». Там вы обычно вводите целевой адрес 192.168.1.100, а исходный и целевой порт (скажем, оба - 8888).