RecvFrom 丢失了一些 UDP 数据包

RecvFrom missing a few UDP packets

好的,我知道 UDP 不能保证传递,但我曾希望通过将 RecvFrom 置于具有 TimeCritical 优先级的线程中并快速将传入消息移动到缓冲区中来捕获所有消息。但是,当消息的速率达到每秒大约 1000 1500 字节消息时,会丢失一些消息。我已经用 WireShark 验证了计算机实际接收到的消息。

我很确定消息会在极短的时间内从 RecvFrom returns 丢失,直到再次调用它。

有什么方法可以"catch all",因为消息显然已经收到了?

谢谢。

Is there any way to "catch all", since the messages apparently are received?

没有。如果您从套接字缓冲区读取消息的速度不够快,并且此接收缓冲区已满,消息就会被丢弃。它们是否在计算机上被接收并且可以被 Wireshark 看到并不重要,重要的是它们是否最终出现在套接字接收缓冲区中。

您可能会尝试增加此缓冲区以降低损失的可能性,但它仍然可能发生。交付的不可靠性是您使用 UDP 的权衡之一,没有任何魔法可以解决它。您要么可以应对数据包丢失,要么必须跟踪丢失并以某种方式请求再次发送消息。