标签: java networking
我正在尝试使用javafx和java.net包创建一个简单的消息传递程序。现在我有一个客户端类和服务器类,使用随机端口上的serversocket和客户端套接字进行连接。如果我在同一台计算机上运行它们或在不同的计算机上运行它们,只要它们都连接到同一个wifi并且我指定了ip地址,它就可以工作。
但是,如果两台计算机未连接到同一个wifi,则无效。如何使其成功?对不起,我是java.net和网络新手。
答案 0 :(得分:1)
您需要traverse the NAT路由器。 这可以通过以下方式之一完成:
如果路由器支持它,您可以使用像this one这样的UPnP库。 UPnP基本上要求允许路由器与端口上的外部网络通信。
然而,由于并非所有路由器都支持UPnP,您可以尝试端口打孔协议,如STUN,可用于libraries。
如果这不起作用,您需要使用TURN等协议通过您自己的服务器中继网络流量。
有ICE协议,它结合了前两种协议。 在java中,可以使用ICE4J等库来完成。