我如何使用Java套接字在不同网络之间进行通信?

问题描述 投票:1回答:1

我有用于客户端和服务器的Java程序,它们在同一个wifi网络中可以正常工作。但是我需要客户端能够从开放的Internet连接到服务器。在这样的问题中

How to connect client and server with the help of ip address which are connected to internet through different wifi?

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

解决方案是从路由器手动将端口重新路由到服务器,使其开放给来自外部的连接。是否可以仅使用服务器上的软件来执行此操作?我不明白为什么需要手动专用端口,因为我安装的计算机上的其他应用程序(例如游戏)当然可以与它们的服务器来回通信,而无需手动进入和翻转开关。

如何仅通过服务器上运行的软件来实现?

如果没有其他方法,其他应用程序如何在不手动更改路由器的情况下进行开放通信,并且通过我的路由器打开端口会导致安全问题?

java sockets security port router
1个回答
0
投票

说其他应用程序可以做到这一点非常普遍。许多应用程序(例如数据库)要求您打开防火墙上的端口(不完全是路由器),而其他应用程序则不需要(大多数Web应用程序使用基于文本的HTTP来传递其数据)。

如果将应用程序更改为使用WebSocket,则可以实现所需的功能。它基于HTTP,但是一旦建立连接,便会升级为二进制双向连接。这样,您就可以在客户端和服务器之间以二进制形式发送数据,而无需打开任何端口。

关于开放港口,这会有安全风险吗?是和否。从某种意义上说,您正在打开Internet的端口,但从没有意义上说,它是仅您的应用程序正在使用并且能够读取(并解释)您通过其交换的内容的非标准端口。它。


0
投票

您将需要更改应用程序的体系结构。目前,您的服务器位于防火墙后面,该防火墙阻止了来自Internet的连接-您需要这样做!如果您允许来自Internet的所有流量无差别地连接到您的服务器,它将很容易受到攻击。

其他应用程序无需端口转发即可安装和通信,因为开发人员在Internet上提供了一个服务器来充当客户端之间的代理。客户端将out连接到Internet,该Internet通常在家庭网络上没有被阻止。内部连接出线被认为比进入[[in。

的连接危害小。
© www.soinside.com 2019 - 2024. All rights reserved.