Netty 简单应用

2021-08-29 17:58:15

当 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> 类型的处理器,直接处理字符串的类型数据了。

Copyright tg-blog 京ICP备15066502号-2