在linux中接收无序udp数据包

我在我的linux c++程序中观察到意外的无序数据包接收序列。在限制了接收套接字的数量之后,它再次按顺序接收数据包。此外,我还显式地测试了boost::asio或epoll的问题,但它们都得到了相同的结果。另一方面,相同的程序在窗口环境(使用boost.asio)下工作得很好。

我发现这是相当奇怪的,我知道udp协议不能保证按顺序接收数据包。然而,广播发送方和接收方之间只有1次切换。因此,我认为,混乱在生理上是不可能的。另外,相同的程序在Window下(在相同的网络下)可以很好地工作。

假设包是保证到达传输层的顺序。附加序列号检查不是一个选项,更改协议也不是。