相比较json而言,protocol buffers定义协议更方便,数据包也更小,安全性也更高,所以项目中使用了protocol buffers。
例子:
message Person {
required string name = 1;
required int32 id = 2;
optional string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
required string number = 1;
optional PhoneType type = 2 [default = HOME];
}
repeated PhoneNumber phone = 4;
}
message: 定义类, 可以嵌套
enum: 定义枚举值
required: 该变量必须赋值
optional: 可以不赋初始值,可以设置默认值
repeated: 数组,可以有0-多个元素
变量类型:
int32, string, float, bytes, bool等
package: 包名
import: 引用其他protocol buffers定义文件
变量后面跟的数字表示顺序,必须带,不能重复,但不需要连续。
使用编译好的exe文件可以方便将.proto文件生成.h和.cc文件,c++文件中会生成变量的get和set方法,以及序列化到buffer的方法。