- 授权协议: 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默认,其它语言不一定可以正确解析
博客秘诀:超人气博客是怎样炼成的
Darren Rowse、Chris Garrett / 向怡宁 / 人民邮电出版社 / 201005 / 39.00元
作为Web 2.0的新生事物的博客,如今已蓬勃发展,呈燎原之势,业已成为许多人的一种生活方式。中国从事博客写作的人数已达千万级,各类博客网站不可胜数。 然而,为什么有的博客人气鼎盛,拥趸众多,有的博客却门前冷落,少人问津呢?究竟应该怎样写好自己的博客,才能让它吸引更多访客的关注呢?博客网站还能为我做什么呢? 本书的两位作者长期主持知名博客站点ProBlogger.net,指导了成千上万......一起来看看 《博客秘诀:超人气博客是怎样炼成的》 这本书的介绍吧!
