代码之家  ›  专栏  ›  技术社区  ›  David

哪种协议是最好的TCP或UDP?

  •  0
  • David  · 技术社区  · 15 年前

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

    提前谢谢

    6 回复  |  直到 15 年前
        1
  •  8
  •   Marcelo Cantos    15 年前

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

        2
  •  2
  •   Andreas Dolk    15 年前

    如果一个 最好的 (普遍地说),另一个将不再存在…

    如果要确保发送的数据确实正确地传递到客户端:使用 传输控制协议 .

    如果您的应用程序是性能关键的和/或带宽是一个限制因素 数据包很小(适合一帧),使用 UDP .

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

        3
  •  1
  •   Jon    15 年前

    TCP。

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

        4
  •  1
  •   RobertPitt    15 年前

    TCP:

    这个协议是最常用的,其原因是它在包传递上的可靠性,因为每个包都保证到达它的目的地。它更常用于流媒体等您不希望持久保存数据的情况。/

    使用TCP时,其速度略慢于UDP,并且具有更多功能:

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

    源@ Wikipeida > Transmission Control Protocol -> Data transfer

    TCP将是最好的选择,首先作为它最重要的评论,它有更广泛的特性。

        5
  •  0
  •   Falcon    15 年前

    您应该使用TCP,因为您希望确保您的数据包确实到达。

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

    UDP最常用于 全部的 包不是关键任务,例如,如果你像第一人称射击者一样更新动作游戏中的移动数据。但即便如此,我这些天还是会使用TCP。

        6
  •  0
  •   jldupont    15 年前

    您所讨论的应用程序在网络方面有大量的需求。您可能需要考虑使用:

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

    在TCP中,重传是内置的,而在UDP中则无法实现。您不想重新传输语音包(例如)。