哪个是最佳协议TCP或UDP?

时间:2010-11-03 10:43:27

标签: android

我要开发一个Android应用程序,通过WiFi传输音乐文件,联系人交换,语音聊天,文本聊天等。哪种协议适合我的应用程序UDP或TCP。因为这两个协议都有一些优点和缺点。你能给我一些建议吗,这对我有帮助..

提前致谢

6 个答案:

答案 0 :(得分:8)

如果您不知道哪个更适合您的应用程序,那么您应该使用TCP。当你更好地理解TCP及其局限性时,你可能想深入研究UDP的神秘世界。

答案 1 :(得分:2)

如果一个人最好(普遍),那么另一个就不存在了......

如果您想确保您发送的数据确实正确传送到客户端:使用 TCP

如果您的应用程序性能至关重要且/或带宽是限制因素数据包很小(适合一帧),请使用 UDP

在您的情况下,我使用TCP / IP,因为对于流式传输或大数据,所有帧都必须以正确的顺序到达(或者可以由客户端订购)。

答案 2 :(得分:1)

TCP。

UDP无法提供可靠的传输,这对您描述的应用程序来说至关重要。例如,如果您正在交换联系人详细信息,而另一端没有收到一半的电话号码 - 这对UDP很有可能,您将如何从中恢复?

答案 3 :(得分:1)

<强> TCP:

这个协议是最常用的,其原因是它在数据包传送方面的可靠性,因为每个数据包都保证到达目的地。它更常用于像流媒体这样的东西,你不希望数据最后/

使用TCP,它比UDP略慢并且具有更多功能:

  • 有序数据传输 - 目标主机根据序列号重新排列
  • 重新传输丢失的数据包 - 任何未确认的累积流都将被重新传输
  • 无差错数据传输(UDP中的校验和是可选的)
  • 流量控制 - 限制发件人传输数据的速率,以保证可靠的传输。接收方不断暗示发送方可以接收多少数据(由滑动窗口控制)。当接收主机的缓冲区填满时,下一个确认在窗口大小中包含0,以停止传输并允许处理缓冲区中的数据。
  • 拥塞控制

来源@ Wikipeida > Transmission Control Protocol -> Data transfer

TCP是最受欢迎的最佳选择,并且具有更广泛的功能

答案 4 :(得分:0)

您应该使用TCP,因为您要确保数据包实际到达。

TCP具有一点处理和带宽开销,但确保您的数据包确实到达并重新发送那些尚未报告的数据包。

UDP最常用于所有数据包的到达不是关键任务的情况,例如:如果您在第一人称射击游戏等动作游戏中更新移动数据。但即便如此,我最近也会使用TCP。

答案 5 :(得分:0)

您正在谈论的应用程序在网络方面有很多要求。您可能需要考虑使用:

  • TCP:对于延迟容忍需求,例如:非实时文件/邮件传输
  • UDP:用于延迟不容忍的需求,例如:语音

使用TCP,内置重传是UDP无法获得的。您不希望重新传输语音数据包(例如)。