gpt4 book ai didi

c# - 如果 UDP 数据包在线上,我能保证在应用层得到它们吗?

转载 作者:可可西里 更新时间:2023-11-01 13:58:17 24 4
gpt4 key购买 nike

首先我明白 UDP 不是一个可靠的协议(protocol),我不能保证通过网络接收数据包。

但是,如果数据包确实到达了我的机器,我能保证在应用程序级别接收到它,还是网络堆栈可以将其丢弃而不受惩罚?

我问的原因是我似乎偶尔会丢失数据包,即使我知道它们在线路上(简单的 EtherCAT 总线,所以数据包总是环回)。

最佳答案

不,即使数据包到达您的机器,也不能保证它们一定会到达您的应用程序。

内核的 UDP 接收队列是有限的,如果数据包到达的速度快于您的应用程序可以处理的速度,队列将填满并且一些数据包将被丢弃。

您可以增加接收缓冲区的大小(请参阅 this question ),但不能使其不受限制。

关于c# - 如果 UDP 数据包在线上,我能保证在应用层得到它们吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10944755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com