Получение внешнего адреса для TCP - PullRequest
0 голосов
/ 09 ноября 2011

Я пытаюсь запустить простой Java-сервер на машине, подключенной к университетской сети.Хотя, когда я проверяю netstat, сервер получает только локальный адрес, а внешний адрес - 0.0.0.0.Это из-за брандмауэра?Как я мог обойти это?Спасибо.

ps Я использую TCP для соединения.

Ответы [ 2 ]

4 голосов
/ 09 ноября 2011

Только соединения имеют внешние адреса.Сокет, который просто прослушивает соединения, не имеет внешнего адреса.

3 голосов
/ 09 ноября 2011

Прослушивающий сокет должен иметь локальный адрес, чтобы клиенты могли подключаться к нему. local address - это адрес компьютера, на котором запущена серверная программа, или «0.0.0.0», если у машины более одного сетевого адреса, и вы хотите принимать подключения для всех из них.

Когда клиент подключается к вашей серверной программе, вам нужно accept, и вы получаете новый сокет. Этот новый сокет будет иметь действительный локальный и удаленный адрес. локальный адрес - это адрес сетевого интерфейса, к которому оно получило соединение, а remote - это адрес клиента, подключающегося к вашей серверной программе.

Надеюсь, это немного прояснит ситуацию.

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