当 Netty 完成了许多底层的通信与并发问题后,使用 Netty 开发网络系统的主要工作就变成了对编/解码的处理,Netty 附带了一些非常简单的编/解码器,可以快速的应用起来。
LineBasedFrameDecoder
类提供行解码,使用字符 \n
或 \r\n
作为包的分隔符,这算是最简单的解码器了,例如 ftp 协议就是使用的换行符。
例如:
p.addLast(new LineBasedFrameDecoder(8192));
DelimiterBasedFrameDecoder
可以指定一段固定的字符格式,这个解码器应该是行解码器的超集。
例如:
p.addLast(new DelimiterBasedFrameDecoder(8192,Delimiters.lineDelimiter()));
FixedLengthFrameDecoder
只按照固定大小的长度解析包,这种类型的包在一些特殊的场景下很方便。
例如:
p.addLast(new FixedLengthFrameDecoder(12));
当收发字符串类型时,可以通过字符串编解码器来组装数据。
p.addLast(new StringDecoder(CharsetUtil.UTF_8));
p.addLast(new StringEncoder(CharsetUtil.UTF_8));
经此字符串解析后可以直接使用 SimpleChannelInboundHandler<String>
类型的处理器,直接处理字符串的类型数据了。