Java UDP服务器 - 客户端通信 - 发送片段(片段发送失败)

时间:2016-10-28 16:51:23

标签: java udp

我在localhost上测试我的程序,当我想从客户端发送到服务器文件时,例如jpg,我想在我的548之后用我的标题将数据拆分为100byte片段。这样会出现问题。服务器打印接收的内容。

RECEIVED: 43749 | 1 | 546 | 1176 | jpg
RECEIVED: 60251 | 1 | 547 | 1176 | jpg
RECEIVED: 53346 | 1 | 548 | 1176 | jpg
RECEIVED: 55018 | 1 | 737 | 1176 | jpg

首先是校验和第二个消息的第三个数量的片段第四个最大片段和最后一个文件类型。到目前为止,一切都正确地找到了较小的文件。请问有什么问题吗?

1 个答案:

答案 0 :(得分:1)

我认为你指的是消息的“无效”顺序(737是在548之后)?

这实际上是完全正常的,因为UDP不保证消息(数据报)顺序:

  

未订购 - 如果两封邮件发送给同一收件人,则   他们到达的顺序无法预测。

只需使用TCP,或者实现应用程序级算法,以便适当地缓冲和重新组合数据。

另外,请注意UDP RFC(https://tools.ietf.org/html/rfc768)所说的内容:

  

协议是面向事务的,传递和复制   保障不受保障。   需要订购可靠的应用   应该使用数据流的传递   传输控制协议(TCP)

即。您可能还会遇到丢失或重复的数据报(尽管这种情况更为罕见,除非您遇到一些网络问题)