[发明专利]一种XMPP协议传输数据压缩与解压缩方法无效
申请号: | 200910107362.X | 申请日: | 2009-05-20 |
公开(公告)号: | CN101557399A | 公开(公告)日: | 2009-10-14 |
发明(设计)人: | 朱懋柱;张代军 | 申请(专利权)人: | 深圳市汇海科技开发有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L12/58 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518048广东省深圳市福田区*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 xmpp 协议 传输 数据压缩 解压缩 方法 | ||
技术领域
本发明涉及网络通讯技术领域,具体涉及一种XMPP协议传输数据压缩与解压缩方法。
背景技术
XMPP协议(extensible Messaging and Presence Protocol,可扩展消息处理现场协议)是一种基于XML语言(extensible Markup Language,可扩展标记语言)的近端串流式即时通信协议。它将现场和上下文敏感信息标记嵌入到XML结构化数据中,使得人与人之间、应用系统之间以及人与应用系统之间能即时相互通信。XMPP协议已被批准为互联网即时通信协议标准。
XMPP协议最大的特点就是具有非常好的扩展性,通过节点的概念能够很容易的扩展协议,因为XMPP协议采用XML语言描述通讯信息,因此具备了XML良好扩展性的特点,然而也不可避免地具有相应的缺陷:XML语言本身是字符串形式的,因此XMPP协议通讯信息的数据量要比二进制通讯协议数据量大得多;另外在使用XMPP协议传输二进制数据时,需要将二进制数据转换为BASE64编码,而BASE64编码数据要比原来的二进制数据大得多。为了既能保持XMPP协议良好的扩展性,同时又能做到使即时通讯信息更加轻便,使二进制数据传输更加便捷,我们需要对使用XMPP协议的方法进行改进。
发明内容
本发明要解决的技术问题是提供一种XMPP协议传输数据压缩与解压缩方法,克服现有技术XMPP协议即时通讯信息数据量过大的缺陷以及在传输二进制数据时必须将二进制数据转换成BASE64编码的缺陷。
本发明为解决上述技术问题所采用的技术方案为:
一种XMPP协议传输数据压缩方法,包括步骤:
A1、将XMPP协议使用的字符串分别进行编码,所述编码组成编码表;
A2、在传输XMPP协议即时通讯信息时,查询所述编码表,将所述即时通讯信息中的XMPP协议字符串由相应的所述编码替换,形成压缩即时通讯信息;
A3、传输所述压缩即时通讯信息。
所述的XMPP协议传输数据压缩方法,其中所述编码的字宽设为一个字节。
所述的XMPP协议传输数据压缩方法,其中所述步骤A2包括步骤:
B1、设置传输缓存Buffer;
B2、将所述即时通讯信息中的协议头数据原样写入所述传输缓存Buffer;
B3、依次对所述即时通讯信息中的每个节点进行所述编码表的查询和所述编码的替换,并将替换后的压缩数据写入所述传输缓存Buffer;
B4、将所述即时通讯信息中的扩展数据长度字段的数值和扩展数据写入所述传输缓存Buffer。
所述的XMPP协议传输数据压缩方法,其中所述步骤B3包括步骤:
C1、在所述编码表中查询所述节点的节点名编码;
C2、如果存在节点名编码,设置所述节点的节点名类型的值为0,否则设置所述节点的节点名类型的值1,将节点名类型的值写入所述传输缓存Buffer;
C3、如果节点名类型的值为0,将节点名编码写入所述传输缓存Buffer;
C4、如果节点名类型的值为1,则先将节点名长度的值写入所述传输缓存Buffer,然后将节点名字符串写入所述传输缓存Buffer;
C5、统计所述节点的节点属性个数,将节点属性个数写入所述传输缓存Buffer,如果节点属性个数大于0,依次对每个节点属性进行所述编码表的查询和所述编码的替换,并将替换后的压缩数据写入所述传输缓存Buffer;
C6、统计所述节点的子节点个数,将子节点个数写入所述传输缓存Buffer;
C7、如果子节点个数大于0,依次对每个子节点进行所述编码表的查询和所述编码的替换,并将替换后的压缩数据写入所述传输缓存Buffer;
C8、将所述节点的数据长度的值写入所述传输缓存Buffer;
C9、将所述节点的数据写入所述传输缓存Buffer。
所述的XMPP协议传输数据压缩方法,其中所述步骤C5包括步骤:
D1、在所述编码表中查询所述节点属性的属性名编码,如果存在属性名编码,设置所述节点属性的属性名类型的值为0,否则设置所述节点属性的属性名类型的值为1,将属性名类型的值写入所述传输缓存Buffer;
D2、如果属性名类型的值为0,将属性名编码写入所述传输缓存Buffer,否则如果属性名类型的值为1,则先将属性名长度的值写入所述传输缓存Buffer,然后将属性名字符串写入所述传输缓存Buffer;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市汇海科技开发有限公司,未经深圳市汇海科技开发有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910107362.X/2.html,转载请声明来源钻瓜专利网。