Netty大战之Netty编解码器和handler的调用机制

基本说明

友情提示:这个ChannelHandler就是我们自己写的handler自定义的,用来处理业务逻辑,我们写的都是extends SimpleChannelInboundHandler,他是ChannelInboundHandler的子类,专门处理入栈的,同理也有写出栈的

 友情提示:处理业务,要出栈都是出栈的handler,要是入栈都是入栈。

 编码解码器

友情提示:为什么后面介绍的粘包问题可以用编码器+协议解决,编码器可以根据协议进行数据的处理,拆分一个完整的包数据。比如:定义一个协议,每个完整的数据以换行为一个完整的包。

接下来通过编码器和解码器根据协议拆分完整的数据包。

 解码器-ByteToMessageDecoder

一个关于ByteToMessageDecoder实例分析 

代码需求:

使用自定义的编码器和解码器来

说明Netty的handler 调用机制

客户端发送long -> 服务器

服务端发送long -> 客户

友情提示:

1、从下图可以看出ChannelPipeline中包含许多的入栈和出栈的Handler,并且入栈和出栈是一个连续的handler链。

2、不论解码器handler 还是 编码器handler 即接 收的消息类型必须与待处理的消息类型一致, 否则该handler不会被执行

3、在解码器 进行数据解码时,需要判断 缓存 区(ByteBuf)的数据是否足够 ,否则接收到的结果可能和期望的结果不一样。

 针对上面的代码需求画出流程图

服务端和客户端都使用了编码和解码器,客户端通过编码器,经过socket到服务端,服务端用解码器,然后经过服务端handler,将消息传递给socket之前先经过编码器,然后客户端通过解码器,对其消息解码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

越来越没意思

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值