Mina中的粘包处理
来源:互联网 发布:ubuntu dash 设置 编辑:程序博客网 时间:2024/05/06 02:13
mina框架虽然已经老了,不过还是比较常用的,遇到解码粘包问题时,就需要继承一个特定的解码器了——CumulativeProtocolDecoder。
顾名思义,这个解码器本身就是作为累积数据用的,为什么这么说呢?因为:
在deCode()方法返回false时,此解码器会把接收到的数据累积性地缓存至IoBuffer中。
这样只要继承此解码器,然后稍做处理,就可以摆脱粘包问题了。
比如,一次通信数据的格式为
当我接收一次数据时,会首先通过得到len值来判断此次所有数据的长度,如果content的长度与len值相等,则此次数据接收完毕,否则将继续接收。
/** * 数据通信解码--处理粘包 */public class UpdateDataDecoder extends CumulativeProtocolDecoder { @Override protected boolean doDecode(IoSession ioSession, IoBuffer ioBuffer, ProtocolDecoderOutput protocolDecoderOutput) throws Exception { //标记位置,重置则从此处重置 ioBuffer.mark(); //报文类型 int type = ioBuffer.getInt(); //报文长度 int len = ioBuffer.getInt(); if (len > ioBuffer.remaining()) { //若长度不够,则重置iobuffer,继续解析 ioBuffer.reset(); return false; } else { //否则视为解析完毕 String content1 = ioBuffer.getString(Charset.forName("utf-8").newDecoder()); protocolDecoderOutput.write(content1); return true; } }}
以上。
0 0
- Mina中的粘包处理
- Mina通信粘包处理
- mina处理断包和粘包
- mina处理断包和粘包
- mina学习 粘包,断包处理
- mina处理断包和粘包
- mina IoBuffer 处理断包、粘包
- mina自定义编解码器接收处理byte数组(同时解决数据传输中的粘包、缺包问题)
- mina自定义编解码器接收处理byte数组(同时解决数据传输中的粘包、缺包问题)
- mina自定义编解码器接收处理byte数组(同时解决数据传输中的粘包、缺包问题)
- Mina框架使用---Android客户端的实现,断线重连,粘包处理(服务端非mina)
- 深入解析Apache Mina源码(4)——Mina编解码以及对粘包和断包的处理
- Socket通信自定义mina 框架过滤器解析(处理粘包、断包问题)
- mina 粘包解决方案之一
- Apache mina 2.0.1 和 AS3 Socket 进行通讯(处理粘包问题)
- Mina传输大数组,多路解码,粘包问题的处理
- NIO框架之MINA源码解析(四):粘包与断包处理及编码与解码
- NIO框架之MINA源码解析(四):粘包与断包处理及编码与解码
- 常用正则表达式
- 漫谈Java理念的转变与JVM的五大优势
- c++ 复制文件
- Web端测试和移动端APP测试之操作特性区分
- iBET Casino Malaysia Win Wu Bai Concert Ticket
- Mina中的粘包处理
- iOS 异步线程的顺序研究
- 单点登录,session超时, ajax链接处理
- java用get方式发送中文乱码解决方法
- 【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (第八节)
- spring cloud demo 分析
- JVM处理Java数组方法的思考
- 龙泉快速记忆法
- Node.js爬虫技术