c#udp检查是否有消息到达

问题描述 投票:0回答:1

你如何检查消息是否已到达目的地,我想出了我的解决方案,但由于我不是这类话题的专业人士,我想知道其他一些方法。我的解决方案是(客户端)发送数据包,如果在超时时间内没有收到确认,则再次发送,(服务器端)如果收到的消息是正确的发送确认,如果没有在另一端接收则再发送。这是该算法图表的图片,Picture。简而言之,双方都会发送两次消息。还有其他想法吗?

c# udp udpclient
1个回答
2
投票

这取决于您的应用程序。但是看看你附上的图表,你更喜欢TCP通信。

但是,如果您真的想使用UDP而不是TCP,则必须放弃ACK。

假设您不断将图像流式传输到远程目标。只要流式传输速度尽可能快,您就不必担心会丢帧。您可以使用UDP。还要考虑传输线(物理层)预测结果的可靠性。

但是,如果您的应用程序不是那么时间关键,但需要尽可能高的可靠性,那么您可以使用TCP。

有关详细信息[请访问此]

下面是与UDP和TCP的一些比较

UDP协议是一种非常简单的协议,允许通过IP发送数据报。 UDP优于TCP用于传送时间关键数据,因为TCP的许多可靠性特征往往以更高的延迟和由于在丢包的情况下无条件地重新发送数据而导致的延迟为代价。

与TCP相比,TCP为每个连接的对等体提供一个有序的八位字节流,UDP提供了基于分组的接口,没有连接对等体的概念。数据报到达时包含源地址1,并且程序员需要手动跟踪概念对等“连接”。

TCP保证2给定的八位字节将被传递给连接的对等体,或者连接将被破坏并通知程序员。 UDP不保证任何给定的数据包将被传送,并且在丢失数据包的情况下不提供通知。

TCP保证发送的每个八位字节都将按照发送的顺序接收。 UDP不保证以任何特定顺序接收所发送的分组,尽管诸如IP的基础协议意味着通常将在没有路由和/或硬件错误的情况下以所发送的顺序接收分组。

TCP对传输数据的大小没有限制。 UDP直接向程序员公开了几个特定于实现的(但也是标准化的)数据包大小限制。创建大小超过这些限制的数据包会增加数据包被分段或简单丢弃的可能性。碎片是不合需要的,因为如果数据报的任何单个片段丢失,则数据报作为整体被自动丢弃。由于各种重叠标准,为数据报设计安全的最大大小并非易事。

© www.soinside.com 2019 - 2024. All rights reserved.