在上个例子中为了解决粘包拆包问题设置解码器,先来看看LengthFieldBasedFrameDecoder:
LengthFieldBasedFrameDecoder()方法是decoder实现,也是LengthFieldBasedFrameDecoder构造函数,
如图可以看出他一共有五个入参,第一个参数为消息的最大长度,第二个参数为起始偏移位,第三个参数是包的属性长度,第四个参数是修正长度(自调节的阀值),第五个参数为跳过字节数。
再看看LengthFieldPrepender()方法,这个里面的参数表示对消息预编码的长度,参考官方文档这里指的是消息长度不是字节,详细可以看 http://netty.io/5.0/api/index.html
pipeline.addLast("decoder", new StringDecoder(CharsetUtil.UTF_8));,解码时的编码格式(读),pipeline.addLast("encoder", new StringEncoder(CharsetUtil.UTF_8));编码时的编码格式(写)。