我想在C#中创建类似应用程序的teamviewer。在性能方面哪种协议更好的TCP或UDP?
答案 0 :(得分:5)
UDP只是在不强制执行订单的情况下发送网络消息,例如它们可以不按顺序进入,而不会检查消息是否通过。
TCP强制执行数据包排序,并且有一种检查实际通过的消息的方法。所以它更可靠。
就吞吐量而言 - 例如在给定时间内传输的数据量 - 实际上它们大致相同。
UDP的优点是延迟更低。因为它不检查订单或确认收到数据包 - 您的程序在收到数据包时会收到数据包。没有等待确认。
当低延迟至关重要且消息很小时,您希望使用UDP,并且您的程序可以容忍丢失数据包和乱序数据包。我只看到它用于视频游戏(如射击游戏)用于发送用户输入。
“teamviewer”对我来说意味着视频 - 大量数据 - 所以使用TCP。
答案 1 :(得分:1)
UDP几乎总能提供比TCP更好的性能,但代价是可靠性。
"可靠性" UDP nowdays的问题基本上是一种形式,它总是会经历,除非你确实有连接问题。在类似团队浏览器的应用程序中,丢失数据包不会产生太大影响,因为它发送的所有内容都是来自一方的输入和"图片"从另一个。
答案 2 :(得分:0)
Teamviewer使用UDP作为建立与远程计算机连接的主要协议。他们只在UDP失败时才使用TCP ...我没有发现他们的UDP连接在可访问性方面有任何问题。如果UDP存在任何问题,他们就不会将其作为主要协议。我们需要什么找到他们如何设法优化他们的UDP连接..