我使用java创建与UDP套接字的聊天,它在本地工作,但是当它发送给朋友端口被阻止(如预期)两种方式,我怎么能直接向IP发送消息无需转发这些端口?
答案 0 :(得分:0)
如果您在同一个LAN上,则一台计算机应该为UDP打开一个特定端口就足够了。然后让另一台机器尝试连接此端口。对于某些防火墙,可以通过从特定端口发送UDP流量动态打开端口,然后让另一台机器发送到同一端口。
通过网络地址转换(NAT),您需要做更多的工作。每台机器只知道其本地地址,而不是NAT另一端的机器将如何连接到它。为此,您使用STUN服务器,它基本上是NAT外部的服务器,它将响应您的计算机的地址。您的两台计算机都需要执行此操作,然后尝试通过明确打开它们或如上所述动态打开它们,将流量发送到打开端口上已解析的地址。该主题是交互式连接建立(ICE)。
答案 1 :(得分:0)
您需要实施打孔。这将有助于两个对等方使用其IP和端口直接通信。请检查您使用的NAT类型。打孔在对称NAT中不起作用。
顺便说一句,总是建议使用TCP进行聊天。使用UDP,您必须解决许多有关可靠性的问题。