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