选择远程桌面应用的网络协议TCP或UDP



我想在c#中创建一个类似teamviewer的应用程序。哪个协议是更好的TCP或UDP在性能方面?

UDP只是发送网络消息而不强制执行顺序,例如它们可以无序进入,并且不检查消息是否通过。

TCP强制数据包排序,并且有一种检查消息实际通过的方法。所以它更可靠。

在吞吐量方面——例如在给定时间内传输的数据量——它们实际上是差不多的。

UDP的优点是时延低。因为它不检查数据包的顺序或确认数据包的接收-您的程序在数据包到达时接收它们。没有等待确认。

当低延迟是至关重要的,并且消息很小,并且您的程序可以容忍丢失的数据包和乱序的数据包时,您希望使用UDP。我只在电子游戏(如射击游戏)中看到过它用于发送用户输入。

"teamviewer"对我来说意味着视频-大量的数据-所以使用TCP。

以可靠性为代价,UDP几乎总是比TCP提供更好的性能。


现在UDP的"可靠性"问题基本上是一种形式,它总是会通过,除非你真的有连接问题。在类似teamviewer的应用程序中,丢失一个数据包不会有太大的影响,因为它所发送的只是来自一侧的输入和来自另一侧的"图片"。

Teamviewer使用UDP作为与远程计算机建立连接的主要协议。他们只在UDP失败时使用TCP…我没有发现他们的UDP连接在可访问性方面有任何问题。如果UDP有任何问题,他们不会把它作为他们的主要协议。我们需要找到的是他们如何设法优化他们的UDP连接…

最新更新