TCP与可靠的UDP

时间:2010-11-14 20:37:43

标签: tcp rudp

我正在编写一个应用程序,客户端将通过无线链接将数据上传到服务器。

连接应该非常可靠。链接预计会中断多次,并且会有许多客户端连接到服务器。

我很困惑是使用TCP还是可靠的UDP。

请分享您的想法。

感谢。

4 个答案:

答案 0 :(得分:6)

当然,RUDP并不是一个正式的标准,并且您无法确定是否会找到可以使用的现有实现。如果可以选择从头开始滚动并重新建立TCP连接,我会选择TCP。

答案 1 :(得分:4)

为了安全起见,我会选择TCP,因为它是一种可靠的标准协议。 RUDP的缺点是不是一个既定的标准(虽然在IETF的几次讨论中已经提到过。)

祝你的项目好运!

答案 2 :(得分:3)

您的TCP和RUDP链接可能会被您的环境破坏,因此您使用RUDP的事实不太可能对此有所帮助;有时可能没有数据报可以通过......

您实际需要确保的是:a)您可以处理已连接客户端的数量,b)当您与客户端(或服务器)失去连接时,您的应用程序协议可以合理快速地检测到并且c)您可以为客户端处理所需的重新连接和维护交叉连接会话状态。

只要你处理b)和c)连接不断被破坏并不重要。确保设计应用程序协议,以便您可以在短时间内完成任务;因此,如果您要上传文件,请确保您正在发送小块,并且应用程序协议可以恢复在中途中断的传输;您不希望通过2GB传输获得99%的连接并丢失连接并且必须重新开始。

为此,您的服务器需要某种客户端会话状态缓存,您可以在其中保持客户端连接的逻辑状态超出连接本身的生命周期。设计从一开始就期望给定的会话包含多个单独的连接。会话状态可能会有某种超时,所以如果客户端随时离开它不会继续消耗服务器上的资源,但说实话,它可能只是在将状态保存到磁盘后的情况一会儿。

总而言之,我认为交通工具的选择并不重要,我至少应该从TCP开始。真正重要的是能够在服务器上管理客户端的会话状态,并处理客户端定期连接和断开连接的事实。

答案 3 :(得分:0)

如果您不确定,可能是您应该使用TCP。首先,对于支持IP的任何事情,它肯定是网络堆栈的一部分。 “可靠的UDP”很少支持开箱即用,因此您将为您的客户提供一些额外的支持。