通过WiFi连接Java套接字?

4

我正在尝试使用javafx和java.net包制作一个简单的消息程序。目前,我有一个客户端类和一个服务器类,它们使用服务器套接字和客户端套接字在随机端口上连接。如果我在同一台计算机上运行两个程序或者在不同的计算机上运行,并且两者都连接到相同的wifi并指定IP地址,那么它是可以工作的。

但是,如果这两台电脑没有连接到相同的wifi,则无法工作。我该如何使其正常工作呢?很抱歉,我对java.net和网络编程不太熟悉。


好的,很抱歉,但是那个问题和谷歌上的搜索结果都涉及局域网通信,而我的代码已经可以在此情况下工作。我需要知道如何在广域网中进行通信,其中计算机通过不同的路由器和ISP连接。我怀疑可能存在一些安全问题,但我不确定如何解决。如果我的表述不够清晰,我很抱歉。 - Albert Jin
1个回答

1

您需要穿越路由器的NAT。 以下是几种实现方式:

如果路由器支持,您可以使用像这个一样的UPnP库。 UPnP基本上是请求路由器允许在端口上与外部网络通信。

但是,由于并非所有路由器都支持UPnP,因此您可以尝试像STUN这样的端口打洞协议,可用于Java的

如果这不起作用,则需要通过像TURN这样的协议将网络流量中继到自己的服务器。

还有ICE协议,它结合了前两个协议。 在Java中,可以使用像ICE4J这样的库来实现。


哦,我在我的路由器上进行了端口转发,成功了。谢谢! - Albert Jin
1
嗨@albert-jin,如果这个或任何答案解决了您的问题,请考虑通过点击复选标记接受它。这向更广泛的社区表明您已找到解决方案,并为回答者和您自己赢得了一些声誉。没有义务这样做。 - Bernd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接