我遇到了一个有趣的问题。基本上,我有两部手机都在NAT后面。我想使用UDP直接在这两个设备之间进行通信。
我知道,如果我启动了从电话到服务器的连接,那么我可以将数据推回电话(即从接收消息的同一个端口发送回接收消息的同一个ip和端口)。因此,我可以通过将两部手机连接到服务器来轻松地在这两个设备之间进行通信。然后将数据发送到服务器并将其重新路由回电话。这将绕过我可能遇到的任何NAT穿越问题。
然而,我宁愿使用服务器将两个设备指向对方,然后让它们直接通信。我该怎么做呢?如果不使用像uPnP这样的东西,这有可能吗?
任何帮助都会大受欢迎!
编辑:我发现这个文档-- http://www.brynosaurus.com/pub/net/p2pnat/ --看起来就像我想要的发夹翻译,但是它看起来不被广泛支持。我想知道移动ISP对UPnP的支持有多好?
发布于 2011-02-22 11:56:58
你要找的是UDP打孔,参见http://en.wikipedia.org/wiki/UDP_hole_punching。
基本思想很简单,您告诉每个端点要使用的端口,然后它们开始发送udp数据包。NAT‘’ing设备在看到第一个传出数据包时将设置一个遍历规则,然后另一端的下一个尝试将与此遍历规则相匹配。
发布于 2011-02-22 11:55:52
您需要一个中介服务器,这样客户端就可以知道它们在哪里了。然后一个通过uPNP打开一个服务器,另一个连接到它。
https://stackoverflow.com/questions/5077720
复制相似问题