实现可靠的UDP连接

时间:2017-04-18 20:30:32

标签: c++ networking udp

我们一直在开发网络密集的软件,并且为了最大限度地减少延迟,我们在大部分网络通信中使用UDP套接字。但是,每当我们将平台部署在一个“未知”的平台上时位置 - 例如在演示软件时,我们遇到了让所有网络实际工作的麻烦。我们在设置路由器时并不是无用的,但我确信在如何正确实现这些套接字方面我们必须有某些方法。

基本上,我们使用这样的系统:

  • 在核心,我们使用虚幻引擎,它有自己的网络实现(我们部分使用)。虚幻引擎使用端口7777 UDP和TCP,我们在专用服务器的路由器上转发这些端口。
  • 我们在另一个端口上使用自定义UDP套接字。我们还将这些转发到专用服务器的路由上。

现在我不明白的是:虚幻引擎UDP协议似乎总是在客户端(没有启用特定转发)上正常运行,而我们的自定义套接字有时无法接收数据:即,在某些网络中它无法正常工作,在其他情况下它不起作用(客户没有收到数据)

我们尝试过的一些事情是在同一端口上的客户端和服务器之间建立TCP连接,这种连接确实连接但并不总是修复'同一UDP端口的断开连接。我尝试的另一件事是NAT打孔,但这似乎并不总能奏效。

我的问题是:虚幻引擎(和其他程序,例如使用VoIP的程序)等程序如何保证'他们的UDP网络有效吗?我很想得到一些关于我可能尝试使用的技术的指示。

谢谢!

0 个答案:

没有答案