通讯协议中使用protobuf的好处:
- 可以跨平台传输数据;
- 在数据传输的过程中,可以自动压缩空间,节省带宽;
- 相比于传结构体,传数据更加的自由,可以有选择的传输字段,例如:服务器增加了一个数据字段,客户端却没有增加,但是客户端不会报错。
protobuf在Linux下安装说明:
sudo apt-get install autoconf automake libtool curl make g++ unzip
git clone https://github.com/google/protobuf.git
cd protobuf
./autogen.sh
./configure
make
make check
sudo make install
在代码中,如果需要使用protobuf的序列化和反序列化的通讯功能,首先需要编写.proto文件,proto文件由代码中传递数据信息的模式而来。
protobuf消息定义是google定义的结构化数据格式,用于数据的序列化和反序列化,内容包含:
package protocol;
message …{…}
enum …{…}
1 如何定义字段关键字:
protobuf关键字包含三个关键字:
required 必须字段
optional 可选字段 ---- if( )
repeated 可以看作是在传递一个数组的值 ---- for( ; ; )
进一步说明:
required字段是必须设置该字段的值,在一个数据包发送的时候,它是该数据包每次都会发送的数据字段;
如果该数据包内并不是每次都会发送该数据字段,则该数据字段为optional可选字段,可以选择性的设与不设;在多if语句中,如遇到选择性发送的字段,也则该数据字段为optional可选字段;
在遇到一个for循环放入数据的时候或是数组进行放入参数的时候,会使用repeated关键字;或者是进入一组集中放入数据信息的情况,也可以使用repeated关键字,利用add_访问器放入参数;补充说明一点,在for()循环放入多个数据信息的时候,可把repeated和嵌套类型结合使用。