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

在linux中接收无序udp数据包 我观察到在我的Linux C++程序中,意外的无序包接收序列。在我限制了接收套接字的数量之后,它再次按顺序接收数据包。此外,我还显式地使用boost::asio或epoll测试了这个问题,但它们都产生了相同的结果。另一方面,相同的程序在窗口环境下工作良好(使用boost.asio),c++,network-programming,udp,boost-asio,epoll,C++,Network Programming,Udp,Boost Asio,Epoll,我发现很奇怪,我知道udp协议不能保证按顺序接收数据包。但是,广播发送器和接收器之间只有一个开关。因此,我认为,在物理上不可能出现故障。另外,在Windows操作系统下(在同一网络下),同样的程序也可以正常工作 假设数据包是按顺序到达传输层的。额外的序列号检查不是选项,更改协议也不是选项。甚至本地主机到本地主机的通信也可能会出现无序的情况,其所有实现都依赖于此。堆栈可以自由地使用UDP在某处实现后进先出队列,因为不需要按顺序交付。每个操作系统都可以而且将表现出不同的行为。如果必须使用UDP,则必

我发现很奇怪,我知道udp协议不能保证按顺序接收数据包。但是,广播发送器和接收器之间只有一个开关。因此,我认为,在物理上不可能出现故障。另外,在Windows操作系统下(在同一网络下),同样的程序也可以正常工作


假设数据包是按顺序到达传输层的。额外的序列号检查不是选项,更改协议也不是选项。

甚至本地主机到本地主机的通信也可能会出现无序的情况,其所有实现都依赖于此。堆栈可以自由地使用UDP在某处实现后进先出队列,因为不需要按顺序交付。每个操作系统都可以而且将表现出不同的行为。如果必须使用UDP,则必须预测OOO数据包并对其进行处理。

即使是本地主机到本地主机的通信也可能出现故障,这取决于所有实现。堆栈可以自由地使用UDP在某处实现后进先出队列,因为不需要按顺序交付。每个操作系统都可以而且将表现出不同的行为。如果必须使用UDP,则必须预测OOO数据包并对其进行处理。

因此,这里的基本思想是使用允许出单或订单交付的协议,然后按订单交付?因此,这里的基本思想是使用允许出单或订单交付的协议,然后按订单交付?