2016-10-04 2 views
2

Я пытаюсь подключиться к серверу на одном компьютере у себя дома с компьютера, подключенного к другому маршрутизатору. Я уже много часов работаю в Интернете и уже настроил переадресацию портов. Я уже пытался создать Socket с моим общедоступным IP-адресом и номером порта, но без успеха. Мой вопрос: знать мой публичный IP-адрес, локальный IP-адрес сервера и номер порта, как мне создать Socket, чтобы он правильно подключался к серверу?Подключение к серверу с клиента на другом маршрутизаторе

Эти конструкторы я пытался, но безуспешно:

new Socket(my_public_ip_address, port); 
new Socket(my_local_ip_address, port); <- this one works only if both computers are connected to the same router 

Заранее спасибо!

+0

1. Можете ли вы добавить вывод ошибки/стек? 2. Является ли ваш клиентский компьютер в сети отображаемым вашим общедоступным IP-адресом (общедоступным маршрутизатором -> клиентом и общедоступным маршрутизатором -> вторым маршрутизатором -> сервером)? Возможно, вы не сможете подключиться к общему интерфейсу маршрутизатора с открытым IP-адресом из внутренней сети. Вы можете попытаться напрямую подключиться к внутреннему IP-адресу сервера или к «общедоступному» IP-адресу второго маршрутизатора. – Konrad

+0

Проблема здесь почти наверняка заключается в том, что вы используете NAT в своем маршрутизаторе, что нарушает способность делать сквозные соединения. Код Java не имеет к этому никакого отношения. Вам необходимо настроить маршрутизатор, чтобы разрешить входящее соединение; Суперпользователь может быть для этого более полезным сайтом. – chrylis

+0

Спасибо, много ребята за ваши быстрые ответы, я обязательно буду проверять все ваши предложения завтра! – andyfed

ответ

0

Прежде всего: Если вам не повезло (как и я), вы не сможете построить соединение с вашим серверным компьютером. (В моем случае университетская сеть блокирует все входящие соединения).

Возможно, ваш сервер не является проблемой, но путь (соединение) к вашему маршрутизатору.

В вашем случае я прежде всего попытаюсь использовать Traceroute вашего сервера, начиная с вашего клиента. Traceroute должен по крайней мере дойти до вашего маршрутизатора. (Я не хорошо с компьютерными сетями, так пожалуйста, поправьте меня, если я ошибаюсь)

0

Допустим, что

  • ПК X имеет localipX и подключен к RouterX с publicipX
  • ПК Y имеет localipY и подключен чтобы роутеры с publicipY

Вы должны сделать следующее:

  1. сделать запрос от X до publicipY через определенный порт (P)
  2. Конфигурирование в вашем маршрутизатореY для перенаправления всего запроса из порта P будет отправлено в localipX в portX (порт, который слушает X).

Я знаю, что вы упомянули, что сделали переадресацию портов и т. Д., Но, пожалуйста, проверьте приведенные выше шаги, возможно, вы пропустите некоторые из них. Если это не сработает, проверьте свой брандмауэр и убедитесь, что все используемые порты открыты и исследуют все узлы, которые подключены (i.e отправляет запрос, publicipX отправляет запрос, publicipY его получает и удостоверяется, что Y получает его).

 Смежные вопросы

  • Нет связанных вопросов^_^