Открыть сокет-сервер для клиентов вне localhost - PullRequest
0 голосов
/ 26 января 2020

TLDR: разрешить пользователям, не находящимся на локальном хосте, подключаться к моему серверу чата, если у них есть IP-адрес сервера.

Я начинаю изучать программирование сокетов в Java, и я столкнулся с проблемой, с которой я могу Кажется, не выяснить. Я создал программу чата basi c с сервером и клиентом, использующим сокеты. Это прекрасно работает в localhost, но я хочу поделиться им с друзьями. Я искал несколько часов и не могу найти решение. Из того, что я прочитал, мне нужно связать мой ServerSocket с моим IP или портом вперед. Просто ищу некоторые пояснения и возможные шаги, которые я мог бы предпринять.

Как я запускаю сервер

ServerSocket server = new ServerSocket(5056);

Как я подключаюсь к серверу

Scanner readIp = new Scanner(System.in);
 String ip = readIp.nextLine();
 socket = new Socket(InetAddress.getByName(ip), Integer.parseInt("5056"));

Посты, на которые я смотрел

Java Переадресация порта сокета

https://coderanch.com/t/571967/java/connect-machine-localhost

Что значит привязать () сокет к любому адресу, кроме localhost?

1 Ответ

0 голосов
/ 26 января 2020

«Разрешить пользователям, не находящимся на локальном хосте, подключаться к моему серверу чата, если у них есть IP-адрес сервера». и вне вашей локальной сети:

  1. publi c «белый» внешний IP.

Так, например, на этой странице https://whatismyipaddress.com/ должен отображаться точно такой же IP-адрес, как в вашей ОС

неблокированные входящие соединения на уровне интернет-провайдера: ваш интернет-провайдер должен разрешать входящие соединения с вашим компьютером через inte rnet. некоторый открытый порт, не заблокированный локальным брандмауэром или интернет-провайдером. Обычно все порты ниже 1024 блокируются для входа на уровне ISP. Отсутствует присутствие NAT (исключения присутствуют, но за пределами этого topi c), что является обычным для домашних маршрутизаторов WiFi / 3/4 / 5g.

Как вы, возможно, уже поняли - это сложно.

Так быстрее будет использовать внешний сервис, например https://portmap.io/:

он делает VPN-соединение + переадресацию портов, поэтому, если вы нажмете на их сервер из inte rnet, он фактически вызовет ваш локальный сервер чата.

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