为什么即使进程在本地运行,UDP 数据报也会失序?

2022-09-03 14:54:35

我正在开发一个在流媒体服务器和Flash客户端之间的Java接口。我注意到UDP数据报可以无序地到达我的接口,即使两个进程都在本地运行。

这正常吗?我认为,由于没有数据报必须通过任何路由器或任何网络设备,因此不应该发生这种情况。


答案 1

这将取决于操作系统。虽然您未能指定操作系统,但无论如何都不重要。为了保持可移植性,您应该始终预测数据报套接字接收无序数据。


答案 2

实际上,不能保证对UDP数据包进行排序和接收,即使它们是由localhost上的localhost发送的。仅仅因为协议的规范并不意味着任何关于它的东西。

由于您无法对它们进行假设,因此您应该选择使用TCP或使用程序处理的序列号来处理重新排序。


推荐