#java #sockets
#java #розетки
Вопрос:
Я создаю клиент-серверное приложение только для учебных целей, и я хочу, чтобы мой клиент подключил сервер (который работает на моем компьютере) с другого компьютера.
Прямо сейчас я пытаюсь использовать общедоступный IP-адрес сервера для ПК (который я получил с whatsmyip.org ) в клиентском сокете: Socket sock = new Socket(HOST, PORT);
где host — это общедоступный IP-адрес компьютера сервера.
Когда я тестировал его с помощью localhost и клиента, работающего на том же компьютере, соединение сработало.
Я уже настроил порт, который я использую на серверном компьютере, и добавил правила брандмауэра, включая брандмауэр маршрутизатора. Таким образом, любой из моих брандмауэров должен блокировать подключение к порту, который я использую.
Я прочитал в другом вопросе это (это был пример): «Ваш серверный КОМПЬЮТЕР находится в Нью-Йорке с IP 192.168.1.121, то есть за маршрутизатором с внутренним IP 192.168.1.1 и общедоступным IP 40.20.26.63. Вам нужно будет убедиться, что вы входите в маршрутизатор и перенаправляете порт 8084 (TCP) на внутренний адрес 192.168.1.121 (внутренний серверный компьютер) «. Как я могу это сделать? Я знаю общедоступный IP-адрес и внутренний IP-адрес сервера, но я не знаю, какой IP-адрес мне нужно ввести в клиентский сокет.
Заранее благодарю.
Комментарии:
1. Я не знаю, какой IP-адрес мне нужно ввести в клиентский сокет. Общедоступный IP-адрес.
2. Но я уже сделал это, и это дает мне исключение java.net.ConnectException: отказано в подключении: connect
3. Как вы сказали, вам нужно перенаправить соединение с общедоступного порта на ваш сервер. Вероятно, в приложении настройки маршрутизатора есть какая-то опция (поищите что-нибудь о NAT или «переадресации портов»). Но это выходит за рамки stackoverflow и, вероятно, более актуально для суперпользователя .
4. Идет ли переадресация портов в мой router conf и открывает там порты? если это так, я уже сделал это и ничего
5. Если клиент находится в вашей локальной сети, используйте свой IP-адрес 10.x.x.x. Особенно, если вы находитесь за брандмауэром, например, если вы находитесь в сети вашей компании, ваш общедоступный IP-адрес не имеет смысла.