01Netty编解码-个人记录

本文探讨了客户端与服务端之间的信息交互,重点讲解了如何通过转码处理将字符串转换为ByteBuf进行传输,以及编解码器在字符串和对象编码过程中的应用,包括使用Protostuff进行对象编码的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、转字符

  1. 在下面的代码中,是把客户端的字符
  2. 先进行转码同时放置在ByteBuf的数组中进行传输
  3. 如果不这样进行就会出现传输不过去的问题
//客户端的Handler
@Override  
public void channelActive(ChannelHandlerContext ctx) throws Exception {
ByteBuf buf = Unpooled.copiedBuffer("HelloServer", CharsetUtil.UTF_8);
ctx.writeAndFlush(buf);
}

二、说明

客户端与服务端通讯要进行信息的交互,那么客户端需要先把自己的内容转成二进制流才能传输

1.发数据编码,收数据-解码

(编码-数据压缩打包)

2.涉及事件

    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. 自定义编解码器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值