Netty编解码器

Netty编解码器

1.当Netty发送或者接受一个消息的时候,就将会发生一次数据转换。入站消息会被解码:从字节转换为另一种格式(比如java对象);如果是出站消息,它会被编码成字节。

2.Netty提供了一系列实用的编解码器,他们都实现了ChannelInboundHandler或者ChannelOutboundHandler接口。在这些类中,channelRead方法已经被重写了。当消息入站时,channelRead会被调用,随后它又调用由解码器所提供的decode()方法进行解码,并将已经解码的字节转发给ChannelPipeline中的下一个ChannelInboudHandler。

解码器-ByteToMessage

  • 继承图

Netty编解码器

ByteToMessageDecode是一个抽象类,自定义解码器要继承它,并实现它的抽象方法decode()。

编码器-MessageToByte

Netty编解码器

netty内部的解码器

LineBasedFrameDecoder:使用行尾控制字符(\n或者\r\n)作为分隔符来解析数据。

DelimiterBasedFrameDecoder:使用自定义的特殊字符作为消息的分隔符。

HttpObjectDecoder:一个HTTP数据的解码器

LengthFieldBasedFrameDecoder:通过指定长度来标识整包信息,这样就可以自动处理粘包和半包消息。