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