是否为用户提供UDP和TCP之间的选项?

是否为用户提供UDP和TCP之间的选项?,tcp,udp,Tcp,Udp,在研究了整整一周的TCP/UDP差异之后,我简直无法决定使用哪一种。我必须发送大量恒定的传感器数据,同时发送不会丢失的重要数据。这对我来说是一个完美的分离,我同时使用了这两种方法,然后我读到一篇文章说,同时使用这两种方法会导致另一种方法的数据包/性能损失。如果我允许用户选择使用哪种协议,而不是选择自己编程,那么会出现任何问题吗?这有什么缺点吗 我提出的另一个解决方案是使用UDP,如果数据包丢失太多,请切换到TCP客户端。我会说使用TCP,除非你不能,因为你有数千个传感器,或者传感器的能量预算非常

在研究了整整一周的TCP/UDP差异之后,我简直无法决定使用哪一种。我必须发送大量恒定的传感器数据,同时发送不会丢失的重要数据。这对我来说是一个完美的分离,我同时使用了这两种方法,然后我读到一篇文章说,同时使用这两种方法会导致另一种方法的数据包/性能损失。如果我允许用户选择使用哪种协议,而不是选择自己编程,那么会出现任何问题吗?这有什么缺点吗


我提出的另一个解决方案是使用UDP,如果数据包丢失太多,请切换到TCP客户端。

我会说使用TCP,除非你不能,因为你有数千个传感器,或者传感器的能量预算非常低,或者其他什么。如果您需要可靠性,您必须在UDP上滚动您自己的可靠性层


尝试使用TCP,并测量您的性能。如果没有问题,并且你没有预料到严重的扩展问题,那么就继续使用TCP。

我会说使用TCP,除非你不能,因为你有数千个传感器,或者传感器的能量预算非常低,或者其他什么。如果您需要可靠性,您必须在UDP上滚动您自己的可靠性层


尝试使用TCP,并测量您的性能。如果还可以,并且您没有预料到严重的扩展问题,那么只使用TCP。

我也只使用TCP。UDP有它的用途,而高重要性的传感器数据并不是我真正想到的。如果你可以忍受丢失大量传感器数据,那么就使用UDP,但我想这根本不是你想要的。

我也会选择TCP。UDP有它的用途,而高重要性的传感器数据并不是我真正想到的。如果你可以忍受丢失大量传感器数据,那么就使用UDP,但我想这根本不是你想要的。

如果你不能丢失数据,并且使用UDP,那么你就是在重新发明TCP,至少是其中的一个重要部分。无论您在性能上获得了什么,都很容易在协议设计错误中丢失,因为设计协议很困难。

如果您不能丢失数据,并且您使用UDP,那么您就是在重新发明TCP,至少在很大一部分TCP。无论您在性能上获得了什么,都很容易在协议设计错误中丢失,因为很难设计协议。

UDP协议比TCP协议更简单,您仍然可以使用UDP模拟TCP的功能。如果您确实有自定义需求,那么UDP更容易调整

然而,我首先要使用UDP和TCP,检查它们在真实环境中的行为,然后才决定按照您需要的方式根据UDP重新实现TCP。考虑到适当的抽象,这应该不是很多工作


也许您可以限制TCP的使用而不占用带宽?

UDP协议比TCP协议更简单,您仍然可以使用UDP模拟TCP的功能。如果您确实有自定义需求,那么UDP更容易调整

然而,我首先要使用UDP和TCP,检查它们在真实环境中的行为,然后才决定按照您需要的方式根据UDP重新实现TCP。考虑到适当的抽象,这应该不是很多工作

也许您可以限制TCP的使用,而不占用带宽?

OP说:

。。。发送不会丢失的重要数据

因此,根据定义,TCP是UDP之上的正确答案

请记住,UDP中的U表示不可靠

关于:

我提出的另一个解决方案是使用UDP,如果数据包丢失太大,请切换到TCP客户端

坏主意:事情往往会在你不期望的时间破裂。作为一名工程师,您的工作是为故障案例制定计划并提前缓解。UDP将丢失数据包。如果您的数据不能丢失,则不要使用UDP。

操作说明:

。。。发送不会丢失的重要数据

因此,根据定义,TCP是UDP之上的正确答案

请记住,UDP中的U表示不可靠

关于:

我提出的另一个解决方案是使用UDP,如果数据包丢失太大,请切换到TCP客户端


坏主意:事情往往会在你不期望的时间破裂。作为一名工程师,您的工作是为故障案例制定计划并提前缓解。UDP将丢失数据包。如果您的数据不能丢失,那么就不要使用UDP。

您链接的文章将对一些特殊情况进行详细分析。这可能不适用于您的情况。除非您自己的性能测试开始显示问题,否则我将忽略这一点。从最简单的设置开始,我猜TCP用于批量数据传输,UDP用于不可靠的传感器数据,测试、测量、查找瓶颈、重新考虑。

您链接的文章详细分析了一些常见情况。这可能不适用于您的sit
评估。除非您自己的性能测试开始显示问题,否则我将忽略这一点。从最简单的设置开始,我猜TCP用于批量数据传输,UDP用于不可靠的传感器数据,测试、测量、查找瓶颈、重新计算。

恒定传感器数据:UDP。不能丢失的重要数据:TCP。

恒定传感器数据:UDP。不可丢失的重要数据:TCP。

您可以实现自己的机制来确认不可丢失的UDP数据包的传递。

您可以实现自己的机制来确认不可丢失的UDP数据包的传递。

我认为使用TCP。此外,如果您管理大量的数据包丢失,那么选择的协议是您最不关心的。如果需要重要数据,请选择TCP。如果数据不重要,可以稍后补充,则UDP。如果数据是关键任务,请选择TCP。UDP将更快,但会因损坏或不存在的数据包而导致左右错误。最后,您将重新发明TCP以解决问题。

我会说,使用TCP。此外,如果您管理大量的数据包丢失,那么选择的协议是您最不关心的。如果需要重要数据,请选择TCP。如果数据不重要,可以稍后补充,则UDP。如果数据是关键任务,请选择TCP。UDP将更快,但会因损坏或不存在的数据包而导致左右错误。最后,您将重新发明TCP来解决问题。

如果您不能决定,您的用户如何才能?SLaks,因为他们知道自己的网络,知道自己想要UDP还是TCP?我将默认为TCP,并允许用户选择是否要切换。应用程序将以任何一种方式工作,我只是允许有助于提高性能的选择。如果你不能决定,你的用户怎么能?SLaks,因为他们知道自己的网络,知道他们想要UDP还是TCP?我将默认为TCP,并允许用户选择是否要切换。应用程序将以任何方式工作,我只是允许有助于提高性能的选择……不,U代表用户。除非你是在开玩笑。@Beau:在谷歌上搜索“define:udp”-你当然是对的,但它给出了有趣的:不可靠的数据报协议,这是记住其最重要特征的好方法……不,U代表用户。除非你是在开玩笑。@Beau:在谷歌上搜索“define:udp”-你当然是对的,但它给出了有趣的:不可靠的数据报协议,这是记住其最重要特征的好方法。