博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
netty tcp 字节有序->对象有序
阅读量:6841 次
发布时间:2019-06-26

本文共 1143 字,大约阅读时间需要 3 分钟。

io.netty.handler.codec.serialization.ObjectDecoder

将ByteBuf[]反序列化为java对象。
A decoder which deserializes the received ByteBufs into Java objects. 
io.netty.handler.codec.serialization.ObjectEncoder
编码器,将java对象序列化为一个netty的ByteBuf对象。
An encoder which serializes a Java object into a ByteBuf. 
要求传送的类实现java.io.serializable接口。用法见下。

Bootstrap b = new Bootstrap();   b.handler(new ChannelInitializer
() { @Override public void initChannel(SocketChannel ch) throws Exception { ch.pipeline().addLast(new ObjectEncoder(), new ObjectDecoder(ClassResolvers.cacheDisabled(null)), new TcpClientHandler()); } });

完整的项目示例见github。

https://github.com/chuchu9293/NettyTcpObjOrdering

其他Decoder

ByteToMessageDecoder是ChannelHandler的一个实现类,他可以在处理数据拆分的问题上变得很简单。
每当有新数据接收的时候,ByteToMessageDecoder都会调用decode()方法来处理内部的那个累积缓冲。
Decode()方法可以决定当累积缓冲里没有足够数据时可以往out对象里放任意数据。当有更多的数据被接收了ByteToMessageDecoder会再一次调用decode()方法。
如果在decode()方法里增加了一个对象到out对象里,这意味着解码器解码消息成功。ByteToMessageDecoder将会丢弃在累积缓冲里已经被读过的数据。请记得你不需要对多条消息调用decode(),ByteToMessageDecoder会持续调用decode()直到不放任何数据到out里。

转载地址:http://fqkul.baihongyu.com/

你可能感兴趣的文章
scanf函数
查看>>
阿里云不做SaaS、要练好内功被集成,发布SaaS加速器
查看>>
双系统如何正确的删除Ubuntu
查看>>
大话it职场之经历风雨是否能见彩虹
查看>>
二叉树的遍历与还原
查看>>
我的友情链接
查看>>
二进制安装MariaDB 5.5.36
查看>>
我的友情链接
查看>>
DNS 安装与解析
查看>>
如何实现低成本site to site ***?
查看>>
用ProxyFactoryBean创建AOP代理
查看>>
使用MDT2013部署Win8系统之三 配置MDT服务器之导入操作系统
查看>>
An internal error occurred during: "Building workspace". Java heap space
查看>>
我的友情链接
查看>>
MongoDB 安装以及系统服务配置方法
查看>>
RAID 技术介绍
查看>>
ldap linux client详细配置
查看>>
【华为OJ】逆波兰
查看>>
通过shell导出数据库查询结果到excel中,并通过邮件发送到邮箱
查看>>
8 个你可能不知道的 Docker 知识
查看>>