我正在编写一个应用程序,客户端将通过无线链接将数据上传到服务器。
连接应该非常可靠。链接预计会中断多次,并且会有许多客户端连接到服务器。
我很困惑是使用TCP还是可靠的UDP。
请分享您的想法。
感谢。
答案 0 :(得分:6)
答案 1 :(得分:4)
为了安全起见,我会选择TCP,因为它是一种可靠的标准协议。 RUDP的缺点是不是一个既定的标准(虽然在IETF的几次讨论中已经提到过。)
祝你的项目好运!
答案 2 :(得分:3)
您的TCP和RUDP链接可能会被您的环境破坏,因此您使用RUDP的事实不太可能对此有所帮助;有时可能没有数据报可以通过......
您实际需要确保的是:a)您可以处理已连接客户端的数量,b)当您与客户端(或服务器)失去连接时,您的应用程序协议可以合理快速地检测到并且c)您可以为客户端处理所需的重新连接和维护交叉连接会话状态。
只要你处理b)和c)连接不断被破坏并不重要。确保设计应用程序协议,以便您可以在短时间内完成任务;因此,如果您要上传文件,请确保您正在发送小块,并且应用程序协议可以恢复在中途中断的传输;您不希望通过2GB传输获得99%的连接并丢失连接并且必须重新开始。
为此,您的服务器需要某种客户端会话状态缓存,您可以在其中保持客户端连接的逻辑状态超出连接本身的生命周期。设计从一开始就期望给定的会话包含多个单独的连接。会话状态可能会有某种超时,所以如果客户端随时离开它不会继续消耗服务器上的资源,但说实话,它可能只是在将状态保存到磁盘后的情况一会儿。
总而言之,我认为交通工具的选择并不重要,我至少应该从TCP开始。真正重要的是能够在服务器上管理客户端的会话状态,并处理客户端定期连接和断开连接的事实。
答案 3 :(得分:0)
如果您不确定,可能是您应该使用TCP。首先,对于支持IP的任何事情,它肯定是网络堆栈的一部分。 “可靠的UDP”很少支持开箱即用,因此您将为您的客户提供一些额外的支持。