mina通信库解决分包粘包CumulativeProtocolDecoder

mina通信库解决分包粘包时解包用CumulativeProtocolDecoder

https://www.cnblogs.com/tankaixiong/archive/2013/03/18/2965527.html

public class FrameDecoder extends CumulativeProtocolDecoder {@Overrideprotected boolean doDecode(IoSession ioSession, IoBuffer ioBuffer, ProtocolDecoderOutput protocolDecoderOutput) throws Exception {if (ioBuffer.remaining() >= 12) {ioBuffer.mark();byte[] heads = new byte[12];ioBuffer.get(heads);EBean eBean = new EBean();eBean.cmdCode = ByteArrayKt.getInt(heads, 0, false);eBean.ext = ByteArrayKt.getInt(heads, 4, false);eBean.bodyLength = ByteArrayKt.getInt(heads, 8, false);if (eBean.bodyLength > ioBuffer.remaining()) {//如果消息内容不够,则重置,相当于不读取sizeioBuffer.reset();return false;//接收新数据,以拼凑成完整数据} else {if(eBean.bodyLength>0) {byte[] bytes = new byte[eBean.bodyLength];ioBuffer.get(bytes, 0, eBean.bodyLength);if (16 != eBean.cmdCode) {Log.d("解码数据", "doDecode: bodyLength=" + eBean.bodyLength + " len=" + bytes.length);}String s = new String(bytes, 0, eBean.bodyLength);eBean.body = s;}if (16 != eBean.cmdCode) {Log.d("TAG", "doDecode: eBean = " + eBean.toStr());}protocolDecoderOutput.write(eBean);if (ioBuffer.remaining() > 0) {return true;}}}return false;}
}

和netty里自动分包扩展差不多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/817416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server数据库常用语句

目录 1. 建库语句 2. 删库语句 3. 创建数据表 4. 创建视图 5. 约束语句 5.1 主键约束(PRIMARY KEY) 5.2 外键约束(FOREIGN KEY) 5.3 非空约束(NOT NULL) 5.4 唯一约束(UNIQUE&#xff…

【Canvas技法】绘制正三角形、切角正三角形、圆角正三角形

【图例】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>绘制正三角形、切角正三角形、圆角正三角形</title><style …

自己操作逆向案例一——某竞赛网登录密码加密,超级简单,泪目了!

网址&#xff1a;aHR0cHM6Ly9leGFtem9uZS5zYWlrci5jb20vcXVlc3Rpb24vZXhwbG9yZQ 打开开发者工具&#xff0c;点击账号密码登录&#xff0c;进行抓包 先进行搜索&#xff0c;发现一下子就找到了&#xff0c;且看上去很像MD5加密&#xff0c;打上断点&#xff0c;再次点击登录。…

华南理工大学程序设计竞赛 - A-KNN算法 (二分)

二分距离 期末考试在即&#xff0c;紧张预习数据挖掘的 Capps 对如下问题十分感兴趣&#xff1a; 在一维空间中有点集 S S S 包含 n n n 个点&#xff0c;用什么算法能快速回答如下 q q q 次查询&#xff1a; 第 i i i 次查询给出点 p i p_i pi​ 和整数 k i k_i ki​​…

linux 自定义命令/别名

参考资料 Linux(Ubuntu)自定义命令的使用Linux/Ubuntu系统自定义Shell命令Ubuntu/Linux 操作系统 自定义命令 目录 一. 为路径取别名二. 修改.profile文件2.1 .profile简介2.2 需求2.3 修改.profile文件 三. 创建软链接 一. 为路径取别名 ⏹需求&#xff1a;有一个work文件夹…

前端面试问题汇总 - JS篇

1. JS的数据类型&#xff0c;如何判断js的数据类型&#xff1f; 数据类型有&#xff1a;Number&#xff0c;String&#xff0c;Boolean&#xff0c;Undefined&#xff0c;Null&#xff0c;Object&#xff0c;Array 其中&#xff0c;Number&#xff0c;String&#xff0c;Boolea…

NVM的安装与配置

目录 一、简介二、下载2.1、windows环境下载地址2.2、安装 三、配置3.1、查看可安装版本3.2、安装版本3.3、使用和切换版本3.4、模块配置 四、其他4.1、全局安装pnpm4.2、常用nvm命令 一、简介 NVM&#xff0c;全称为Node Version Manager&#xff0c;是一个流行的命令行工具&a…

VScode中C++里CompileDebug(winlinux)

C在vscode中配置 1.编译器环境搭建&#xff0c;c_cpp_properties.json生成 前置&#xff0c;mingw64添加入系统环境变量&#xff0c;编辑快捷键&#xff1a;ctrlshiftp修改选项&#xff1a;编译器路径 C:/mingw64/bin/g.exe IntelliSense 模式&#xff0c;这个应该是再说明一…

ucore 实验物理内存管理篇

实验汲取知识 基于段页式内存地址的转换机制页表的建立和使用方法物理内存的管理方法 首先了解如何发现系统中的物理内存&#xff1b;然后了解如何建立对物理内存的初步管理&#xff0c;即了解连续物理内存管理&#xff1b;最后了解页表相关的操作&#xff0c;即如何建立页表…

算法--目录

algorithm: 十种排序算法 二分法-各种应用 algorithm: 拓扑排序 算法中的背包问题 最长子序列问题 前缀和-解题集合 差分数组-解题

第41篇:有限状态机<四>

Q&#xff1a;本期我们介绍有限状态机的应用之二&#xff1a;米里状态机“1101”序列检测器。 A&#xff1a;摩尔状态机1101序列检测器有5个状态&#xff0c;而米里状态机只有4个状态。当状态为s_3且输入为1时&#xff0c;状态机输出1。这里输出与输入一起被标志在状态转移箭头…

vue3 动态class和style

1、需求&#xff1a;一个删除的弹窗&#xff0c;点击会提示“是否需要删除XXXXX&#xff08;name&#xff09;”&#xff0c;但是name不固定&#xff0c;所以删除弹窗的width不能写死。&#xff08;如果不设置width&#xff0c;本项目的弹窗会自适应变得特别长&#xff09;

mybatis自制插件+注解实现数据脱敏

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 mybatis自制插件注解实现数据脱敏 前言数据脱敏的实现方式构思从哪个地方进行脱敏&#xff1f;它怎么知道我什么数据需要脱敏 项目实现拦截器实现注解实现枚举实现效果图展示 前言 在数字时代&#x…

Java哈希查找(含面试大厂题和源码)

哈希查找&#xff08;Hash Search&#xff09;是一种基于哈希表&#xff08;Hash Table&#xff09;的数据查找方法。哈希表通过使用哈希函数将键&#xff08;Key&#xff09;映射到表中的位置来存储数据&#xff0c;从而实现快速的数据访问。哈希查找的效率通常取决于哈希函数…

hive了解系列一

“ 随着智能手机的普及&#xff0c;互联网时代红利的爆发&#xff0c;用户数量和产生的数据也越发庞大。为了解决这个问题&#xff0c;提高数据的使用价值。 Hadoop生态系统就被广泛得到应用。 在早期&#xff0c;Hadoop生态系统就是为处理如此大数据集而产生的一个合乎成本效益…

力扣第20题有效的括号

typedef char STDataType; //动态栈 #define allocator_may_return_null 1typedef struct ST {STDataType* _a;int _top;//栈顶元素int _capacity;//最大容量 }Stack; //初始化栈 void StackInit(Stack *pst);//入栈 void StackPush(Stack* pst, STDataType x);//出栈 void Sta…

英语写作中“大量的”“重大的”“显著的”substantial、considerable、significant的用法

一般“大量的”“重大的”会用a great number of 、a great amount of 、a plenty of 、great等&#xff0c;这些表达都过于trivial &#xff0c;用好substantial、considerable、significant 会对写作增色不少。 一、对于可数事物&#xff0c;用a considerable/substantial n…

小程序变更主体需要多久?

小程序迁移变更主体有什么作用&#xff1f;小程序迁移变更主体的好处有很多哦&#xff01;比如可以获得更多权限功能、公司变更或注销时可以保证账号的正常使用、收购账号后可以改变归属权或使用权等等。小程序迁移变更主体的条件有哪些&#xff1f;1、新主体必须是企业主体&am…

每日OJ题_BFS解决最短路①_力扣1926. 迷宫中离入口最近的出口

目录 力扣1926. 迷宫中离入口最近的出口 解析代码 力扣1926. 迷宫中离入口最近的出口 1926. 迷宫中离入口最近的出口 难度 中等 给你一个 m x n 的迷宫矩阵 maze &#xff08;下标从 0 开始&#xff09;&#xff0c;矩阵中有空格子&#xff08;用 . 表示&#xff09;和墙&…

Hibernate入门经典与注解式开发大全

本博文主要讲解介绍Hibernate框架&#xff0c;ORM的概念和Hibernate入门&#xff0c;相信你们看了就会使用Hibernate了! 什么是Hibernate框架&#xff1f; Hibernate是一种ORM框架&#xff0c;全称为 Object_Relative DateBase-Mapping&#xff0c;在Java对象与关系数据库之间建…