我一直在寻找一个简单的UDP C ++库,它现在可以提供一段时间的可靠性。我刚遇到ENet,看起来很完美,除了我在文档中找不到任何支持NAT打孔的内容。互联网似乎有一些人在讨论这个问题,但我还没有找到一个明确的答案,是否有可能。
我已经有第三方服务器配置为分发外部ips&港口到客户。
如果有可能,有人可以给出描述该过程的伪代码/步骤吗?
答案 0 :(得分:4)
我想出来了。这是我做的:
答案 1 :(得分:1)
使用STUN进行打孔,然后使用ENet。
与STUN-Server通信并检索公共端点和 NAT类型。确保NAT类型已打开,然后继续=>在用于与STUN-Server通信的套接字上使用 getsockname ,以获取本地端点,然后关闭该套接字。
现在创建ENet服务器并使用本地端点对其进行初始化。现在,来自其他计算机的ENet客户端可以使用公共端点连接到服务器。
答案 2 :(得分:-1)
UDP可能会丢弃数据包,并且可能无序地发送数据包。 订购数据包是微不足道的。 但是如果丢弃了一个数据包,就无法恢复它。但是,许多执行UDP的系统将为您提供另一个包含重复数据的流。在这种情况下,您可以简单地使用辅助流创建备份,然后更新检查第一个流中丢弃的数据包是否在第二个流中可用。