好的,所以我需要在C ++中使用我的应用程序来建立点对点UDP连接。我考虑过打孔和UPNP(使用端口映射)。打孔似乎有点乱:你需要服务器,大量的垃圾UDP数据包。我真的不想弄乱服务器,所以我选择了UPNP。我已经建立了miniupnpc http://miniupnp.free.fr/库,并乐意在家中使用它。但是当我在其他网络中尝试我的应用程序时,我的结果非常令人沮丧:
所以,我有两个问题:
谢谢!
答案 0 :(得分:2)
- UPNP不是很常见,或者我只是不走运,还是使用miniupnpc错了?
醇>
您无法信任随机路由器以支持UPnP IGD端口映射,您绝对不能相信要启用的功能。
是否还有其他方法可以进行点对点UDP连接 不需要外部服务器?(所以不要打孔)
第三方服务器严格来说并不是典型家庭网络中的打孔所必需的,但是你需要一种方法让端点了解彼此的外部IP地址和端口:此时两台机器都可以开始向每个服务器发送消息其他:第一条消息确实会丢弃,但是当路由器发现内部IP已经将数据包发送到外部IP时,它也会允许传入流量(因为路由器认为这些是来自内部IP的数据包的响应,即使他们不是真的。)
请参阅ICE了解该领域标准的内容。