我正在开发流媒体服务器和Flash客户端之间的java接口。我注意到,即使两个进程都在本地运行,UDP数据报也可以无序到达我的接口。
这是正常的吗?我认为,由于没有数据报必须经过任何路由器或任何网络设备,因此不应该发生这种情况。
答案 0 :(得分:8)
这将取决于操作系统。虽然您未能指定操作系统,但它无论如何都不重要。为了保持可移植性,您应始终预期数据报套接字接收无序数据。
答案 1 :(得分:7)
实际上,无法保证对UDP数据包进行排序和接收,即使它们是由localhost在localhost上发送的。仅仅因为协议的规范并不意味着它的任何内容。
由于您无法对它们进行假设,因此您应该选择使用TCP或使用程序处理的序列号来处理重新排序。
答案 2 :(得分:2)
虽然您正在运行localhost,但是在实际部署中期望UDP数据报不按顺序进行。
如果您需要它们,请尝试使用TCP。
答案 3 :(得分:0)
UDP没有指定保留序列,因为上面的海报都说了,但如果没有中间路由器,我也会怀疑你的代码中有错误。