参考《netty权威指南》
解决思路
消息定长,例如每个报文的大小为固定长度200字节,不够用空格补充
在包尾增加回车换行符进行分割,如ftp协议
将消息分为消息头和消息体,消息头中包含消息总长度(或者消息体长度)的字段,通常的设计思路为消息头的第一个字段使用int32来表示消息的总长度
更复杂的应用层协议
常用解码器
LineBasedFrameDecoder
这个解码器是通过遍历ByteBuf中的可读字节,当读取到 “\n” 或者是 “\r\n” 的,就以此位置为该包的结束位置。StringDecoder
这个解码器是将接收到的对象转换成字符串,然后给后面的handler调用。DelimiterBaseFrameDecoder
这个解码器是可以通过自定义的分隔符来确定包的结束位置。FixedLengthFrameDecoder
这个解码器是通过确定长度来对消息进行自动解码。