我的问题是询问是否接受使用TCP和UDP在客户端和服务器之间进行通信。
我正在制作一个实时客户端服务器游戏,其中包含需要保证的部分通信(登录等),但其他部分可以丢失数据包(状态更新等)。所以,我想在大多数数据通信中使用UDP,但我不想实现自己的框架,以确保我的控制通信(登录)得到保证。
那么,最初使用TCP来管理连接,然后在一个单独的端口上发送数据通信包是否合理?
答案 0 :(得分:5)
你绝对应该这样做(使用TCP和UDP来完成不同的通信任务。)而且你甚至不必使用两个不同的端口。 One will suffice。您可以在同一端口上侦听两种不同的协议。
答案 1 :(得分:2)
这是非常合理的,已经在主流中使用。即使在浏览Web时,DNS操作也是基于UDP的,HTTP连接是基于TCP的。
请记住,您应该将两种连接类型视为完全独立,或采用其他措施来正确处理任何相互依赖关系。 TCP连接可能会在操作系统和网络级别出现计时问题,并且UDP连接会出现数据包丢失问题。当应用程序的TCP部分停止或UDP数据包丢失时,您应采取特定措施来避免死锁和性能问题。
答案 2 :(得分:0)
它不仅被接受,而且被广泛使用。举个例子,BATS Exchange在他们的market data分发系统中使用这种方法来实现恢复机制。