Netty编码解码器

当Netty发送或者接受一个消息的时候,就将会发生一次数据转换,入站的消息会被从二进制字节码转化成另一种形式,成为解码,出站的消息会转化成二进制字节,称为编码。

一个关于编码解码的举例:将一个long转化成二进制字节码的编码器和将二进制字节码转化成long类型的解码器。

解码器:

public class MyByteToLongDecoder extends ByteToMessageDecoder {
/**
*
* @param channelHandlerContext 上下文对象
* @param byteBuf 入站byteBuf
* @param list 解码后数据传给下个handler
* @throws Exception
*/
@Override
protected void decode(ChannelHandlerContext channelHandlerContext, ByteBuf byteBuf, List<Object> list) throws Exception {
//long 是八个字节 按八个字节处理
if(byteBuf.readableBytes()>=8){
list.add(byteBuf.readLong());
System.out.println("MyByteToMessageDecoder");
}
}
}
编码器:
public class MyLongToByteEncoder extends MessageToByteEncoder<Long> {

@Override
protected void encode(ChannelHandlerContext channelHandlerContext, Long aLong, ByteBuf byteBuf) throws Exception {
System.out.println("MyLongToByteEncoder");
System.out.println(aLong);
byteBuf.writeLong(aLong);
}
}

posted @ 2020-09-06 16:50  第十八使徒  阅读(160)  评论(0)    收藏  举报