长度不同的客户端邮件的Netty碎片

时间:2016-10-31 14:41:18

标签: java netty decode fragmentation

我遇到了一些网络碎片数据问题。 我的服务器接受客户端的连接。客户端 发送不同的消息类型。这些消息告诉了它的长度 前2个字节中的有效负载。

一个例子:

Message 1
[00 21][21 bytes of payload]

Message 2
[00 25][23 bytes of payload]

Message 1
[00 80][80 bytes of payload]

我可以告诉我丢失了消息,因为消息是按顺序编号的。 以下是处理后Payloads的外观:

Count:1,Messnger:John Doe1, Message:"I can tell you something";
Count:1,Messnger:John Doe2, Message:"What do you have to tell me";
Count:1,Messnger:John Doe3, Message:"Always be reading and teaching";

所以说如果客户端发送了5条消息:

Message 1
Message 2
Message 3
Message 4
Message 5

在我的阅读和处理中,我想念一些消息。我只能说

Message 1
Message 2
Message 4

我不确定为什么,但我认为消息可能会碎片化

1 个答案:

答案 0 :(得分:2)

听起来您处理邮件的方式可能有问题。您很可能在单个pi is 3.14159274101257324218750000000000 k1 is 0.60725295543670654296875000000000 事件中收到部分消息甚至多条消息。

我建议调查LengthFieldBasedFrameDecoder并在ServerHandler之前添加它。它应该有助于简化消息处理。