[发明专利]二进制协议编码、解码方法和装置有效
申请号: | 201810686262.6 | 申请日: | 2018-06-28 |
公开(公告)号: | CN109104405B | 公开(公告)日: | 2021-05-28 |
发明(设计)人: | 李洋;钟逸;江雪;刘晓俐;曹子钰;邓晖;邵晨龙;陈涛;杨帆;王啸原;肖雪露;刘佳;邓勇;许林;黎楚;张慧;冯曼琳;宁达;杨婧;徐建林;曾文艺;张菁菁;周峻颖;周浩宇;吴江楠 | 申请(专利权)人: | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) |
主分类号: | H04L29/06 | 分类号: | H04L29/06 |
代理公司: | 北京三高永信知识产权代理有限责任公司 11138 | 代理人: | 徐立 |
地址: | 430205 湖北省武*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 二进制 协议 编码 解码 方法 装置 | ||
1.一种二进制协议编码方法,其特征在于,所述方法包括:
接收数据分发服务消息;
将所述数据分发服务消息解析为键值对结构,所述键值对结构的关键字用于指示二进制协议的格式,所述键值对结构的值为需要采用二进制协议传输的内容;
根据所述关键字确定对应的信息单元标识列表,所述信息单元标识列表包括至少一个信息单元标识;
在数据库中分别查找所述信息单元标识列表中的各个信息单元标识对应的编码规则;
分别采用查找到的各个编码规则对所述键值对结构的值进行编码,得到采用不同的编码规则编码得到的二进制编码结果;
将所述二进制编码结果通过二进制字节流发送给编码规则对应的地址,或者将所述二进制编码结果写成二进制文件发送给编码规则对应的地址。
2.根据权利要求1所述的方法,其特征在于,所述编码规则包括多个字段,所述多个字段包括一个根节点字段和多个子节点字段,所述根节点字段为一个用于承载编码后的数据的容器,所述多个子节点字段与二进制协议的各个字段对应;
所述多个字段中的每个字段均包括字段名称、字段类型、内部编码类型、外部编码类型、长度、来源类型、数据来源、主题和关键字。
3.根据权利要求2所述的方法,其特征在于,所述分别采用查找到的各个编码规则对所述键值对结构的值进行编码,包括:
判断所述根节点字段的来源类型是否为存储过程类型;
如果所述根节点字段的来源类型是存储过程类型,则调用所述根节点字段的数据来源指示的存储过程,并将从所述数据库中读取的数据填入参数键值对中,然后按照如下步骤遍历所述多个子节点字段;如果所述根节点字段的字段类型不是存储过程类型,则按照如下步骤遍历所述多个子节点字段;
判断所述子节点字段的字段类型是否为容器类型;
如果所述子节点字段的字段类型是容器类型,则判断所述子节点字段的来源类型是否为存储过程类型;如果所述子节点字段的来源类型是存储过程类型,则调用所述子节点字段的数据来源指示的存储过程,并将从所述数据库中读取的数据填入容器中;如果所述子节点字段的字段类型不是存储过程类型,则获取所述子节点字段的数据;
如果所述子节点字段的字段类型不是容器类型,则获取所述子节点字段的数据;将所述子节点字段的数据写入二进制流。
4.根据权利要求3所述的方法,其特征在于,所述获取所述子节点字段的数据,包括:
判断所述子节点字段的来源类型是否为默认值;
如果所述子节点字段的来源类型是默认值,则根据所述子节点字段的数据来源读取默认值;如果所述子节点字段的来源类型不是默认值,则根据所述参数键值对确定数据索引,根据所述数据索引读取数据。
5.根据权利要求3所述的方法,其特征在于,所述将所述子节点字段的数据写入二进制流,包括:
判断所述子节点字段的字段类型;
当所述子节点字段的字段类型为数值型时,判断所述子节点字段的外部编码类型和内部编码类型;
如果所述子节点字段的外部编码类型为2-16编码类型且内部编码类型为十进制,则采用2-16十进制编码规则将所述子节点字段的数据写二进制流;如果所述子节点字段的外部编码类型为2-16编码类型且内部编码类型为十六进制,则采用2-16十六进制编码规则将所述子节点字段的数据写二进制流;如果所述子节点字段的外部编码类型为2-16编码类型且内部编码类型为IP编码类型,则采用2-16IP编码规则将所述子节点字段的数据写二进制流;如果所述子节点字段的外部编码类型为BCD编码类型且内部编码类型为十进制,则采用BCD十进制编码规则将所述子节点字段的数据写二进制流;如果所述子节点字段的外部编码类型为BCD编码类型且内部编码类型为十六进制,则采用BCD十六进制编码规则将所述子节点字段的数据写二进制流;
当所述子节点字段的字段类型为字符串型时,判断所述子节点字段的外部编码类型和内部编码类型,所述内部编码类型包括:右侧补0x00、右侧补0x30、左侧补0x00及左侧补0x30,所述外部编码类型包括:GB2312和UTF8;
根据所述子节点字段的外部编码类型和内部编码类型,按照字符串编码规则写二进制流。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所),未经武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所)许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810686262.6/1.html,转载请声明来源钻瓜专利网。