买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明公布】用于通信设备持续极速收包解包的单缓冲区断包拼接算法_李泽龙_202410109061.5 

申请/专利权人:李泽龙

申请日:2024-01-25

公开(公告)日:2024-04-26

公开(公告)号:CN117938774A

主分类号:H04L47/43

分类号:H04L47/43;H04L47/36;H04L67/568

优先权:

专利状态码:在审-实质审查的生效

法律状态:2024.05.14#实质审查的生效;2024.04.26#公开

摘要:本发明公开了用于通信设备持续极速收包解包的单缓冲区断包拼接算法,给出了适用于“任何包头含包起始标识符字段的协议报文”的通用解包算法及断包拼接方法。本发明仅用单线程、单个接收缓冲区,不开辟任何辅助空间,通过KMP字符串匹配算法在待解包区域查找各包起始标识符降低包起点定位过程的时间开销,通过划分出可能断包区缩小对剩余部分是否够一包长的解包前越界检查的范围,通过在此可能断包区的越界检查快速识别断包,通过搬运长度为N的断包至缓冲区首址buf开始存放并在下轮收包时以buf+N为缓存起点实现快速拼接断包。本发明满足了通信业对解包的低时间和空间复杂度、通用性等需求,克服了粘包、断包等引起的通信解包技术难题。

主权项:1.用于通信设备持续极速收包解包的单缓冲区断包拼接算法,应用于进行持续收包解包的通信设备中,其特征在于,包括:1创建一存储空间连续的接收缓冲区,其首地址为buf;创建变量N,所述变量N用于表示保存在所述接收缓冲区中待解包区域的待解包数据量,第一次收包之前所述待解包数据量N等于0;创建指针变量char*p,所述指针变量char*p用于遍历所述待解包区域查找定位缓存的各包的包起始标识符字段;2通信设备以流形式接收协议包后,以buf+N为首地址缓存当前实际接收到的数据量recv,并更新待解包数据量N=N+recv;3根据协议规定的最大单包长度M与所述待解包数据量N的大小关系划分待解包区域[buf,buf+N-1],若NM,则待解包区域全部被划分为可能断包区,若N≥M,则待解包区域被划分为包完整区[buf,buf+N-M]和可能断包区[buf+N-M+1,buf+N-1];4通过KMP字符串匹配算法在所述待解包区域中移动指针p依次从左往右匹配查找协议规定的包起始标识符字段,当找到当前包的起始标识符后,以找到的起始标识符为包起点,并依据协议规定的各字段格式和长度依次向右解包,当当前包解包完成后使所述指针p等于此包末地址加1,再以此为新的查找起点继续向右定位拆解当前包的下一包,若指针p从所述新的查找起点右移匹配下一包起始标识符的过程中已进入可能断包区,则先依据协议格式对剩余未解包部分[p,buf+N-1]做越界检查,以确认剩余未解包部分足够一包长才能继续解包,若剩余未解包部分不足一包长时,则剩余未解包部分缓存的是未被完整接收的断包无法继续解包,此时调用函数memcpybuf,p,N搬运所述断包至缓冲区起点开始存放,并更新待解包数据量N等于断包长度buf+N-p后,结束本轮解包,若直至p指向的新查找起点已离开待解包区域仍未发现断包,则将待解包数据量N清零并结束本轮解包;5回到步骤2继续下一轮收包解包,此时若待解包数据量N非0,则为上一轮解包过程中遗留并搬运的断包长度,该轮以buf+N为接收缓存的起点实现了断包与新数据的快速拼接。

全文数据:

权利要求:

百度查询: 李泽龙 用于通信设备持续极速收包解包的单缓冲区断包拼接算法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。