【发布时间】:2020-06-28 21:12:24
【问题描述】:
我正在尝试用 java 构建一个系统,其中一台计算机充当服务器,另一台计算机充当客户端,并将它们连接在一起(即在公共网络上发送数据 b/w)。这是我的伪代码-
Server.java
ServerSocket server = new ServerSocket(55955);
Socket socket = server.accept();
Client.java
Socket socket = new Socket("<ip address of server>", 55955);
//code to send and receive response from server
如果我的服务器和客户端在我的计算机上运行,代码可以正常工作。但是如果我在另一台机器上运行服务器(互联网上朋友的电脑)并尝试在运行我的机器的客户端上使用该 ip,它不工作。我做了很多谷歌搜索,除了打开机器上的防火墙或端口外,没有找到合适的解决方案。
- 是否有任何其他选项可以在不进行任何转发或打开端口的情况下连接互联网上的计算机?
- 有一些点对点系统(例如:skype)等可以完成我正在尝试实现的相同的事情(据我所知,它没有打开主机上的任何端口)。如果我错了,请纠正我。
谢谢。
【问题讨论】:
-
1.如果这台特定机器在没有防火墙或 NAT 任何保护的情况下暴露在 Internet 上,则无需转发/打开即可进行连接——如今这几乎是不可能的。 2. Skype 使用 TCP 端口 443,默认是开放的。
-
@AlexRudenko 谢谢。对不起,我是网络新手。我想到的一个问题是,如果它侦听 tcp 端口 443,它如何区分黑白其他请求。例如:如果我有另一个应用程序,例如 Zoom,它也侦听端口 443。我们如何区分?
-
谢谢。 TCP 或 UDP 打孔对我有帮助。
标签: java networking tcpclient tcpserver