Как я могу использовать java сокеты для связи между различными сетями? - PullRequest
2 голосов
/ 06 января 2020

У меня есть java программ для моего клиента и сервера, и они отлично работают в одной сети Wi-Fi. Но мне нужно, чтобы клиенты могли подключаться к серверу с открытым inte rnet. В таких вопросах

Как связать клиента и сервер с помощью IP-адреса, которые подключены к inte rnet через разные wifi?

https://coderanch.com/t/667020/java/Socket-connections-networks

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

Как я могу добиться этого с помощью всего лишь программного обеспечения, работающего на моем сервере?

Если нет другого способа, как другие приложения общаются открыто без изменений маршрутизатора вручную и открывают порты через мой маршрутизатор приводит к проблемам безопасности?

1 Ответ

1 голос
/ 06 января 2020

Вам необходимо изменить архитектуру вашего приложения. В настоящее время ваш сервер находится за брандмауэром, который блокирует соединения от inte rnet - вы этого хотите! Если вы разрешите всем трафикам c из inte rnet беспорядочно подключаться к вашему серверу, он будет очень уязвим для атак.

Другие приложения устанавливаются и обмениваются данными без переадресации портов, поскольку разработчик предоставляет сервер на inte rnet в качестве прокси между клиентами. Клиент подключается out к inte rnet, который обычно не блокируется в домашних сетях. Выходящие внутренние соединения считаются менее опасными, чем исходящие соединения в .

...