我想在java中创建一个简单的p2p信使,我设法与同一网络中的两台计算机进行通信,但是当我尝试从网络外部向另一台计算机发送消息时,正在消失......我知道我可以在路由器中前进,但我不想那样做,我想让它像雅虎,gtalk或其他im服务器那样做。 我认为他们使用NAT系统来做到这一点,但我不知道如何:D。帮助通过NAT与套接字进行通信
有人能解释我NAT如何工作,如果这是解决我的问题的方式?
我读到我需要服务器的静态和公共IP,当客户端(使用私有IP)向服务器发送请求时,他的NAT将知道如何处理来自服务器的消息下一次...但是如果客户端不向服务器发送请求,并且服务器向客户端发送数据包,则NAT不知道将数据包发送到网络内部(到客户端)的位置。
我想是不是正确?
非常感谢!
此外,某些路由器允许通过UPNP定义动态端口转发,但必须启用它。如果双方都支持NAT,那将是我推荐的方式。 – ZeissS 2010-12-16 09:23:58
谢谢你的回答,现在我明白了这个过程! – Cata 2010-12-16 09:41:10
也就是说,如果您有权访问这些路由器。如果一台路由器属于你的ISP,那会起作用吗? – 2010-12-16 09:43:04