Netty ChannelPipeline执行过程理解

仅为一家之言,慎

理解

  • 今天将以前写的程序重新拿出来看了一下,发现对于netty有了新的疑惑,编解码器的执行到底是怎么样的,byteToMessageMessageToByte的过程到底是怎么样的
  • 其实先不想Netty,我们从正常的Java网络传输开始,我们想将对象在网络中传输,肯定不能使用对象本身,需要序列化,Java本身的序列化技术可以用,但是问题太多,一是效率低,码率大,二是不能跨语言,这个过程就是先将对象序列化,传输到另一端后,在另一端进行反序列化,重新形成对象;
  • 然后是Netty中,在Netty中,对于序列化这样的行为进行了封装,也就是说编解码器,我们在ChannelPipeline中会添加编解码器,在自定义的编解码器中,可以指定序列化的方式,默认的ObjectDecode/ObjectEncode是Java的序列化技术
  • 进入正题,首先,从客户端开始,当我们在一个ChannelHandler中调用ChannelHandlerContext中调用writeAndFlush时,消息从客户端发出去,这个消息一般是一个对象,然后会经过ChannelPipeline,一般我们创建ChannelPipeline时使用的时addLast,然而最后一个使我们的正式处理的handler,接着就是编码器的执行,将对象编码成对应的字节形式传输,虽然我们在服务端和客户端的ChannelPipeline中都添加了编码和解码器,但是发出的消息只会被编码,进来的消息只会被解码,所以在编码器和解码器的顺序并不重要
  • 待续…
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值