好的,我需要我的应用程序在C++上建立点对点的UDP连接.我考虑过打孔和UPNP(使用端口映射)。打洞似乎有点麻烦:你需要服务器,大量的垃圾UDP数据包。我实际上是不想搅乱服务器,所以我选择了UPNP。我已经建立了小型http://miniupnp.free.fr/库,并且很高兴地在家里使用它。但是当我在另一个网络上试用我的应用程序时,我得到了非常令人沮丧的结果:
所以,我有两个问题:
谢谢!
发布于 2014-09-18 09:25:28
您不能信任随机路由器来支持UPnP IGD端口映射,而且您也绝对不能信任要启用的特性。
是否还有其他方法来建立不需要外部服务器的点对点UDP连接?
严格地说,在典型的家庭网络中打孔并不需要第三方服务器,但您确实需要一种方式让端点了解对方的外部IP地址和端口:在这一点上,两台机器都可以开始相互发送消息:第一条消息确实将被丢弃,但是当路由器看到内部IP已经向外国IP发送了数据包时,它也将允许传入通信量(因为路由器将它们视为来自内部IP的数据包的响应,尽管它们并不是真正的)。
有关这一领域的标准,请参见冰。
https://stackoverflow.com/questions/25908144
复制相似问题