1、解码器Decoder

解码器Decoder主要是将字节数组转换为消息对象。也是继承自消息处理ChannelHandler。

解码器主要函数:decode(一般用这个)和decodeLast(常用于处理最后的几个字节,也就是Channel关闭的时候所产生的最后一个消息)

抽象解码器:

ByteToMessageDecoder:用于将字节转换为消息,需要自己检查缓冲区是否有足够的字节。

ReplayingDecoder:继承自ByteToMessageDecoder,不需要检查缓冲区是否有足够的字节。性能略慢于ByteToMessageDecoder。

项目复杂性高用ReplayingDecoder,否则用ByteToMessageDecoder。

MessageToMessageDecoder:用于将一种消息解码到另一种消息。

常用具体实现类解码器(主要是解决TCP底层的粘包和拆包问题):

DelimiterBasedFrameDecoder:指定消息分隔符的解码器。如 123|||abc。 ”|||“为分隔符

LineBasedFrameDecoder:以换行符为结束标志的解码器。

LengthFieldBasedFrameDecoder:基于长度解码的通用解码器。message=header+body.

StringDecoder:文本解码器,将接收到的消息转为字符串,一般会与上面几种进行组合,然后在后面加业务的handler.

2、编码器Encoder

Encode编码器将消息对象转换为字节数组。

Netty未提供和解码器完全对等的编码器,因为各自场景不同。

MessageToByteEncoder:将消息转换为字节数组,调用write方法,会先判断当前编码器是否支持需要发送的消息类型。

MessageToMessageEncoder:将一种消息编码转换为另一种消息编码。

3、编解码器组合Codec

组合编码器和解码器,以此提供对于字节和消息都相同的操作。

优点:成对出现,编解码都在同一个类中。

缺点:耦合在一起,不方便拓展。

ByteToMessageCodec

MessageToMessageCodec

Netty编码解码器相关推荐

  1. 基于Netty实现的尬聊聊天室

    尬聊聊天室第二版,第一版在这---->>>>第一版点我鸭 Netty编码解码器 解码器:负责处理"入站InboundHandler"数据 编码器:负责&qu ...

  2. Java NIO框架Mina、Netty、Grizzly介绍与对比

    Java NIO框架Mina.Netty.Grizzly介绍与对比 原文地址:https://blog.csdn.net/e765741668/article/details/45234711 Min ...

  3. netty系列之:netty中的懒人编码解码器

    文章目录 简介 netty中的内置编码器 使用codec要注意的问题 netty内置的基本codec base64 bytes compression json marshalling protobu ...

  4. netty系列之:自定义编码解码器

    文章目录 简介 自定义编码器 自定义解码器 添加编码解码器到pipeline 计算2的N次方 总结 简介 在之前的netty系列文章中,我们讲到了如何将对象或者String转换成为ByteBuf,通过 ...

  5. netty 系列之:netty 中常用的字符串编码解码器

    简介 字符串是我们程序中最常用到的消息格式,也是最简单的消息格式,但是正因为字符串 string 太过简单,不能附加更多的信息,所以在 netty 中选择的是使用 byteBuf 作为最底层的消息传递 ...

  6. Netty 自定义编码解码器

    Netty 自定义编码解码器 入栈:InboundHandler ,出栈:OutboundHandler.Netty 构建 chain 来处理业务. 自定义一个解码器 解码器主要是对客户端发送的消息进 ...

  7. 【Netty】什么是编码器和解码器?

    什么是编码器和解码器? 从网络传输的角度来讲,数组总是以字节的格式在网络之中进行传输的. 每当源主机发送数据到目标主机时,数据会从本地格式被转换成字节进行传输,这种转换被称为编码,编码的逻辑由编码器处 ...

  8. Netty内置处理器以及编解码器

    一.Netty已经为我们提供了常用协议的处理器,我们直接使用就可以 可以看到包括redis协议,http协议等主流协议的编码解码器,netty都为我们提供了. 二.代码测试 使用netty直接对red ...

  9. netty系列之:在netty中使用protobuf协议

    文章目录 简介 定义protobuf 定义handler 设置ChannelPipeline 构建client和server端并运行 总结 简介 netty中有很多适配不同协议的编码工具,对于流行的g ...

最新文章

  1. Python使用matplotlib可视化两个时间序列的交叉相关性图、交叉相关图显示了两个时间序列之间的滞后性(Cross Correlation plot)
  2. django的模板系统
  3. 管与c++中容量的重新分配问题
  4. html 禁止缩放 ios10,完美解决ios10及以上Safari无法禁止缩放的问题
  5. 基于matplotlib的数据可视化 - 热图imshow
  6. UI设计中颜色的前进色与后退色
  7. python基础小白题4
  8. Oracle11g新特性:在线操作功能增强-Oracle11g新增的不可见索引 (转载)
  9. 【Python3爬虫】网易云音乐歌单下载
  10. __flash__removeCallback 未定义错误
  11. Apache Shiro框架
  12. 低代码平台上的出入库管理
  13. 计算机电脑怎么开热点,电脑怎么设置wifi热点共享
  14. matplotlib4 --设置line的属性, color,linestyle, linewidth, marker等
  15. 机器学习 ---- 新词发现
  16. 生成对抗网络 Generative Adversarial Nets(GAN)详解
  17. 谷歌浏览器如何给长网页截图?
  18. 锁屏密码锁、图案锁忘记怎么办?简单利用adb删除(部分机型可用)
  19. 【管理篇 / 登录】❀ 03. USB线连接登录 ❀ FortiGate 防火墙
  20. involution:比卷积、自注意力机制更好的神经网络新算子

热门文章

  1. 应用程序编程太难?Appy Pie推出“零基础”VR AR设计平台
  2. 大数据可视化陈为智慧树_智慧树知到_大数据可视化_答案章节单元测试答案
  3. java hotspot 默认垃圾回收器_怎么查看服务器默认的垃圾的收集器是哪个?生产环境上如何配置垃圾回收收集器?谈谈你对垃圾收集器的理解?...
  4. Python使用Turtle画国旗系列,Python相关方法的梳理和总结
  5. Internal error 2356.CABS.W1.cab
  6. C语言计算一个整数的位数
  7. #资讯 #生活 #科技 李斌称蔚来手机进展顺利,微信iOS版内测更新,威马CEO沈晖回应12亿年薪,迅雷网游加速器停运,这就是今天的其它大新闻
  8. docker安装bind
  9. android8.1系统静默安装问题(无须手动点击)
  10. 阿里云服务器入门基础教程汇总(新手)