- 授权协议: BSD
- 开发语言: C/C++
- 操作系统: 跨平台
- 软件首页: https://github.com/huoyu820125/bstruct
- 软件文档: https://github.com/huoyu820125/bstruct
软件介绍
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默认,其它语言不一定可以正确解析
The Black Box Society
Frank Pasquale / Harvard University Press / 2015-1-5 / USD 35.00
Every day, corporations are connecting the dots about our personal behavior—silently scrutinizing clues left behind by our work habits and Internet use. The data compiled and portraits created are inc......一起来看看 《The Black Box Society》 这本书的介绍吧!
