1.一种基于可见字符的网络协议格式的网络协议的编解码方法,其特征在于:该编解码方法包括编码流程和解码流程;
网络协议格式包括若干个数据项,相邻数据项之间通过数据项分隔符进行分割;每个数据项由键值对表示,键值对分为有键的键值对和无键的键值对;有键的键值对由键和值组成,键表示数据的名称,值表示数据的具体值,键与值之间通过键值分隔符进行分割;无键的键值对仅由值组成;
编码流程包括:
A1、添加一项键值对数据到网络协议中,判断键值对是否为无键的键值对,若是,转入A4;若否,转入A2;
A2、将数据的数据名称作为键值对的键添加到网络协议中,转入A3;
A3、添加键值分隔符到协议中,以区分键和值,转入A4;
A4、将数据的具体值作为键值对的值添加到网络协议中,转入A5;
A5、添加数据项分隔符到网络协议中以区分各数据项,转入A6;
A6、判断是否还有数据需要添加到网络协议中,若是,返回A1,继续添加;若否,网络协议编码流程结束;
解码流程包括:
B1、标记网络协议的当前字符位置为起始位置,从起始位置开始查找分隔符,一旦查找到,则转入B2;
B2、判断找到的分隔符是数据项分隔符还是键值分隔符,若为键值分隔符,转入B3;若为数据项分隔符,转入B4;
B3、将起始位置到键值分隔符之间的字符作为键存储至当前数据项中,若当前数据项中已有键,则更新当前数据项的键,返回B1;
B4、将起始位置到数据项分隔符之间的字符作为值存储至当前数据项中,转入B5;
B5、将当前数据项的数据内容保存至存储队列中,并清除当前数据项中的内容,转入B6;
B6、判断当前字符位置是否为网络协议的尾部,若是,表明网络协议已解析完,网络协议编码流程结束;否则返回B1,继续解析。
2.如权利要求1所述的网络协议的编解码方法,其特征在于:所述数据项分隔符为/;所述键值分隔符为@=;步骤A2、A4中,若键中或值中包含有与分隔符产生歧义的特殊字符,则需将产生歧义的特殊字符进行转译,该转译具体包括:若键中或值中包含有@字符,则将所有@字符替换为@A;若键中或值中包含有/字符,则将所有/字符替换为@S。
3.如权利要求1所述的网络协议的编解码方法,其特征在于:所述数据项分隔符为/;所述键值分隔符为@=;步骤B3、B4中,均包括对键或值进行反译的操作,该反译操作具体包括:若键中或值中包含有@A字符,则将所有@A字符替换为@;若键中包含有@S字符,则将所有@S字符替换为/;若键中@字符后面接的不为A、S或=三者之一,则表明解析协议出错,直接报错退出。
4.一种基于权利要求1所述网络协议格式的网络协议的编解码系统,其特征在于:该编解码系统包括编码模块和解码模块;
所述编码模块包括键值对判断子模块、键添加子模块、键值分隔符添加子模块、值添加子模块、数据项分隔符添加子模块和编码判断子模块;
其中,所述键值对判断子模块用于:收到编码信号后,添加一项键值对数据到网络协议中,判断键值对是否为无键的键值对,若是,向值添加子模块发送添加值信号;若否,向键添加子模块发送键信号;
所述键添加子模块用于:收到键信号后,将数据的数据名称作为键值对的键添加到网络协议中,向键值分隔符添加子模块发送键值分隔符信号;
所述键值分隔符添加子模块用于:收到键值分隔符信号后,添加键值分隔符到协议中以区分键和值,并向值添加子模块发送值信号;
所述值添加子模块用于:收到值信号后,将数据的具体值作为键值对的值添加到网络协议中,并向数据项分隔符添加子模块发送数据项分隔符信号;
所述数据项分隔符添加子模块用于:收到数据项分隔符信号后,添加数据项分隔符到网络协议中以区分各数据项,并向编码判断子模块发送编码判断信号;
所述编码判断子模块用于:收到编码判断信号后,判断是否还有数据需要添加到网络协议中,若是,向键值对判断子模块发送编码信号;否则,结束网络协议编码流程;
所述解码模块包括分隔符查找子模块、分隔符判断子模块、键存储子模块、值存储子模块、解码保存子模块和解码判断子模块;
其中,所述分隔符查找子模块用于:收到查找信号后,标记网络协议的当前字符位置为起始位置,从起始位置开始查找分隔符,一旦查找到,向分隔符判断子模块发送分隔符判断信号;
所述分隔符判断子模块用于:收到分隔符判断信号后,判断找到的分隔符是数据项分隔符还是键值分隔符,若为键值分隔符,向键存储子模块发送键存储信号;若为数据项分隔符,向值存储子模块发送值存储信号;
所述键存储子模块用于:收到键存储信号后,将起始位置到键值分隔符之间的字符作为键存储至当前数据项中,若当前数据项中已有键,则更新当前数据项的键,并向分隔符查找子模块发送查找信号;
所述值存储子模块用于:收到值存储信号后,将起始位置到数据项分隔符之间的字符作为值存储至当前数据项中,并向解码保存子模块发送解码保存信号;
所述解码保存子模块用于:收到解码保存信号后,将当前数据项的数据内容保存至存储队列中,并清除当前数据项中的内容,向解码判断子模块发送解码判断信号;
所述解码判断子模块用于:收到解码判断信号后,判断当前字符位置是否为网络协议的尾部,若是,结束网络协议编码流程;否则,向分隔符查找子模块发送查找信号。
5.如权利要求4所述的网络协议的编解码系统,其特征在于:所述数据项分隔符为/;所述键值分隔符为@=;所述编码模块还包括转译子模块,所述转译子模块用于对键中或值中包含的与分隔符产生歧义的特殊字符进行转译;转译过程中,若键中或值中包含有@字符,则将所有@字符替换为@A;若键中或值中包含有/字符,则将所有/字符替换为@S。
6.如权利要求4所述的网络协议的编解码系统,其特征在于:所述数据项分隔符为/;所述键值分隔符为@=;所述解码模块还包括反译子模块,所述反译子模块用于对键或值进行反译;反译过程中,若键中或值中包含有@A字符,则将所有@A字符替换为@;若键中包含有@S字符,则将所有@S字符替换为/;若键中@字符后面接的不为A、S或=三者之一,则表明解析协议出错,直接报错退出。