我遇到了一些网络碎片数据问题。 我的服务器接受客户端的连接。客户端 发送不同的消息类型。这些消息告诉了它的长度 前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
我不确定为什么,但我认为消息可能会碎片化
答案 0 :(得分:2)
听起来您处理邮件的方式可能有问题。您很可能在单个pi is 3.14159274101257324218750000000000
k1 is 0.60725295543670654296875000000000
事件中收到部分消息甚至多条消息。
我建议调查LengthFieldBasedFrameDecoder并在ServerHandler之前添加它。它应该有助于简化消息处理。