Netty编码解码器
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编码解码器相关推荐
- 基于Netty实现的尬聊聊天室
尬聊聊天室第二版,第一版在这---->>>>第一版点我鸭 Netty编码解码器 解码器:负责处理"入站InboundHandler"数据 编码器:负责&qu ...
- Java NIO框架Mina、Netty、Grizzly介绍与对比
Java NIO框架Mina.Netty.Grizzly介绍与对比 原文地址:https://blog.csdn.net/e765741668/article/details/45234711 Min ...
- netty系列之:netty中的懒人编码解码器
文章目录 简介 netty中的内置编码器 使用codec要注意的问题 netty内置的基本codec base64 bytes compression json marshalling protobu ...
- netty系列之:自定义编码解码器
文章目录 简介 自定义编码器 自定义解码器 添加编码解码器到pipeline 计算2的N次方 总结 简介 在之前的netty系列文章中,我们讲到了如何将对象或者String转换成为ByteBuf,通过 ...
- netty 系列之:netty 中常用的字符串编码解码器
简介 字符串是我们程序中最常用到的消息格式,也是最简单的消息格式,但是正因为字符串 string 太过简单,不能附加更多的信息,所以在 netty 中选择的是使用 byteBuf 作为最底层的消息传递 ...
- Netty 自定义编码解码器
Netty 自定义编码解码器 入栈:InboundHandler ,出栈:OutboundHandler.Netty 构建 chain 来处理业务. 自定义一个解码器 解码器主要是对客户端发送的消息进 ...
- 【Netty】什么是编码器和解码器?
什么是编码器和解码器? 从网络传输的角度来讲,数组总是以字节的格式在网络之中进行传输的. 每当源主机发送数据到目标主机时,数据会从本地格式被转换成字节进行传输,这种转换被称为编码,编码的逻辑由编码器处 ...
- Netty内置处理器以及编解码器
一.Netty已经为我们提供了常用协议的处理器,我们直接使用就可以 可以看到包括redis协议,http协议等主流协议的编码解码器,netty都为我们提供了. 二.代码测试 使用netty直接对red ...
- netty系列之:在netty中使用protobuf协议
文章目录 简介 定义protobuf 定义handler 设置ChannelPipeline 构建client和server端并运行 总结 简介 netty中有很多适配不同协议的编码工具,对于流行的g ...
最新文章
- Python使用matplotlib可视化两个时间序列的交叉相关性图、交叉相关图显示了两个时间序列之间的滞后性(Cross Correlation plot)
- django的模板系统
- 管与c++中容量的重新分配问题
- html 禁止缩放 ios10,完美解决ios10及以上Safari无法禁止缩放的问题
- 基于matplotlib的数据可视化 - 热图imshow
- UI设计中颜色的前进色与后退色
- python基础小白题4
- Oracle11g新特性:在线操作功能增强-Oracle11g新增的不可见索引 (转载)
- 【Python3爬虫】网易云音乐歌单下载
- __flash__removeCallback 未定义错误
- Apache Shiro框架
- 低代码平台上的出入库管理
- 计算机电脑怎么开热点,电脑怎么设置wifi热点共享
- matplotlib4 --设置line的属性, color,linestyle, linewidth, marker等
- 机器学习 ---- 新词发现
- 生成对抗网络 Generative Adversarial Nets(GAN)详解
- 谷歌浏览器如何给长网页截图?
- 锁屏密码锁、图案锁忘记怎么办?简单利用adb删除(部分机型可用)
- 【管理篇 / 登录】❀ 03. USB线连接登录 ❀ FortiGate 防火墙
- involution:比卷积、自注意力机制更好的神经网络新算子
热门文章
- 应用程序编程太难?Appy Pie推出“零基础”VR AR设计平台
- 大数据可视化陈为智慧树_智慧树知到_大数据可视化_答案章节单元测试答案
- java hotspot 默认垃圾回收器_怎么查看服务器默认的垃圾的收集器是哪个?生产环境上如何配置垃圾回收收集器?谈谈你对垃圾收集器的理解?...
- Python使用Turtle画国旗系列,Python相关方法的梳理和总结
- Internal error 2356.CABS.W1.cab
- C语言计算一个整数的位数
- #资讯 #生活 #科技 李斌称蔚来手机进展顺利,微信iOS版内测更新,威马CEO沈晖回应12亿年薪,迅雷网游加速器停运,这就是今天的其它大新闻
- docker安装bind
- android8.1系统静默安装问题(无须手动点击)
- 阿里云服务器入门基础教程汇总(新手)