编解码"/>
01Netty编解码
一、转字符
- 在下面的代码中,是把客户端的字符
- 先进行转码同时放置在ByteBuf的数组中进行传输
- 如果不这样进行就会出现传输不过去的问题
//客户端的Handler
@Override
public void channelActive(ChannelHandlerContext ctx) throws Exception {
ByteBuf buf = Unpooled.copiedBuffer("HelloServer", CharsetUtil.UTF_8);
ctx.writeAndFlush(buf);
}
二、说明
客户端与服务端通讯要进行信息的交互,那么客户端需要先把自己的内容转成二进制流才能传输
1.发数据编码,收数据-解码
(编码-数据压缩打包)
2.涉及事件
-
- 出栈事件、入栈事件
所有发出去的走编码,所有收进来的走解码 - 客户端与服务端都将建立自己的管道进行数据的解析操作
- 出栈事件、入栈事件
下图为自己的对于整个服务与客户端交互的理解,在图中充分体现了channelHandle的作用
三、编解码器
1. 字符串:
1. //编码器
channel.pipeline().addLast(new StringEncoder());
//解码器
channel.pipeline().addLast(new StringDecoder());`
2. 对象编码解码
channel.pipeline().addLast(new ObjectDecoder(1024, ClassResolvers.cacheDisabled(ClassLoader.getSystemClassLoader())));
这个现在是不好用,当前推荐protostuff
3. Protostuff的使用
1. 自定义编解码器
更多推荐
01Netty编解码
发布评论