c#udp检查是否到达消息

c#udp检查是否到达消息,c#,udp,udpclient,C#,Udp,Udpclient,你如何检查邮件是否到达目的地,我想出了一个解决方案,但由于我不是这方面的专家,我想知道其他一些方法。 我的解决方案是(客户端)发送数据包,如果在超时时间内没有收到确认,则再次发送,(服务器端)如果收到的消息正确,则发送确认,如果另一端没有收到确认,则再次发送。 这是这个算法的示意图, . 简言之,双方都发出了两次信息。 还有其他想法吗?这取决于您的应用程序。但是看一下您所附的图表,您更喜欢TCP通信 然而,如果你真的想使用UDP而不是TCP,你必须放弃ACK 假设您正在将图像连续流式传输到远程目

你如何检查邮件是否到达目的地,我想出了一个解决方案,但由于我不是这方面的专家,我想知道其他一些方法。 我的解决方案是(客户端)发送数据包,如果在超时时间内没有收到确认,则再次发送,(服务器端)如果收到的消息正确,则发送确认,如果另一端没有收到确认,则再次发送。 这是这个算法的示意图, . 简言之,双方都发出了两次信息。
还有其他想法吗?

这取决于您的应用程序。但是看一下您所附的图表,您更喜欢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直接将程序员暴露于几个特定于实现的(但也是标准化的)数据包大小限制。创建大小超过这些限制的数据包会增加数据包被碎片化或被丢弃的可能性。碎片化是不可取的,因为如果数据报的任何单个片段丢失,整个数据报将自动丢弃。由于各种重叠的标准,为数据报确定一个安全的最大大小并非易事。

这取决于您的应用程序。但是看一下您所附的图表,您更喜欢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直接将程序员暴露于几个特定于实现的(但也是标准化的)数据包大小限制。创建大小超过这些限制的数据包会增加数据包被碎片化或被丢弃的可能性。碎片化是不可取的,因为如果数据报的任何单个片段丢失,整个数据报将自动丢弃。由于各种重叠的标准,为数据报制定一个安全的最大大小并非易事。

为什么不使用TCP自动发送确认信息呢?基于TCP的通信能够发送回确认消息的响应。对于您的情况,我会使用TCP而不是UDPIt,我想制作一个API,在不同的项目中实现它,如实时游戏或流媒体,而不需要