类似xml的结构化二进制流协议 BStruct

码农软件 · 软件分类 · 其他开发相关 · 2019-10-24 05:56:43

软件介绍

BStruct,实现了二进制结构通信协议的构造与解析,可以想数组一样使用["数据名"]方便的读写数据,且像xml一样,数据之间没有顺序依赖。

协议介绍二进制结构通信协议将结构以二进制方式保存到byte流中当前支持语言:C++,希望有兴趣的朋友一起来完成java php python等语言的版本。

协议样例(绿色为说明)

    0500 msgid      成员名:成员名长度5byte,成员名: msgid

        0200 D107   msgid长度2byte,值2001

    0700 Student    成员名:成员名长度7byte,成员名:Student

        1700 长度:23byte值:一个BStruct(2结构长度 +21结构内容 )

            Student的值是一个嵌套的BStruct结构

                0400 name        成员名:成员名长度4byte,成员名:name

                    0500 huoyu   name长度5,值huoyu

                0300 age          成员名:成员名长度3byte,成员名:age

                    0100 1F        age长度1,值31岁

 

使用范例:

发送结构

 

    char buf[256];
    bsp::BStruct msg;
    msg.Bind(buf,256);//绑定buf,添加数据都会复制入buf末尾
    msg["msgid"] = (unsigned short)2001;//添加成员消息id,unsigned short类型
    bsp::BStruct Student;//创建成员学生
    /*
        将Student与msg的缓冲末尾绑定(连接)
        写入Student的数据,会直接写入msg末尾(即buf末尾)
     */
    Student.Bind(msg.PreBuffer("Student"), msg.PreSize() );
    Student["name"] = "huoyu";
    Student["age"] = (char)31;
    msg["Student"] = Student;//添加成员Student
    send(msg.GetStream(), msg.GetSize());//发送消息

接收结构
    //接收BStruct
    char buf[256];
    recv( buf, 2 );//接收BStruct长度
    short size = bsp::memtoi( buf, 2);//还原逆序保存的short
    recv( &buf[2], size );//接收结构内存连在长度后面
    size += 2;//结构总大小=内容大小+结构长度2byte
    //解析BStruct
    bsp::BStruct msg;
    if ( !msg.Resolve(buf,size) ) return;//解析
    if ( !msg["msgid"].IsValid() ) return;//检查msgid是否存在,因为是范例,以下数据不再检查
    unsigned short msgid = msg["msgid"];//取得msgid
    bsp::BStruct Student = msg["Student"];//取得Student
    string name = Student["name"];//取得name
    char age = Student["age"];//取得age

 

协议格式:成员1(byte流)+...+成员n(byte流)

成员格式:成员名长度(unsigned short)+成员名(char数组,不包含\0)+值长度(unsignedshort)+值(可以是一个嵌套的BStruct或BArray,BArray为1.30版本新增支持数组类型的编码)

成员名长度限制:1~256byte

数据类型:

    short int long int32 int64等各整型数的字节顺序:高位在前,底位在后

    不建议跨语言使用float double struct(c/c++专用),因为保存方式为memcpy方式复制进byte流,字节序为机器/系统api默认,其它语言不一定可以正确解析

本文地址:https://codercto.com/soft/d/17428.html

移动互联网商规28条

移动互联网商规28条

王吉斌、彭盾、程成 / 机械工业出版社 / 2014-6 / 49.00

每一次信息技术革命都会颠覆很多行业现有的商业模式和市场规则,当前这场移动互联网变革的波及面之广和蔓延速度之快,完全超出我们的想象。行业的边界被打破并互相融合,在此之前,我们只面临来自同行业的竞争,但是今天,我们不知道竞争对手会来自哪里。也许今天我们还是行业的巨人,但是明天就会被踩在脚下,当我们的体温犹热时,新的巨人已经崛起。诺基亚等传统科技巨头的衰退告诉我们,企业在一个时代的优势,到了另外一个新时......一起来看看 《移动互联网商规28条》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器