Protocol Buffers

Protocol Buffers

各位亲 有时间可以去看看我的  “金骏家居淘宝店” http://jinjun1688.taobao.com/shop/view_shop.htm?tracelog=twddp 买时说明在我的博客看到有优惠哦 还有意外礼品赠送  真正的程序员淘宝店 

今日任务:生成协议  执行序列化与反序列化

 

protocol buffer :一种跨平台,支持多种语言,扩展性好的用于通讯协议,数据存储的的结构化数据串行化方法。

 

一 在mac上安装protocol buffer的基本步骤

1)       下载相应文件并解压到本地文件夹

2)       确定电脑是否安装gcc  若没有则独立安装:Xcode->Preferences->Downloads下的Components下,安装command Line Tools。

3)       切换到管理员身份

4)      在终端下进入到protobuf文件夹。

5)       在终端下依次输入:

./configure

make

make check

make install

 

二 编写一个简单的proto文件

       创建一个扩展名为.proto的文件

       message day01{

             required int64 a=1;

             optional string b=2;

             repeated float Id=3;

}

解析:1. message是消息定义的关键字,类似与struct

        2. day01消息名字,等同于类名

        3. required 表明该字段是必要字段,保证在序列化与反序列化的时候必须要赋值。

              optional字段未初始化就会有一个默认值赋予该字段,也可以指定默认值。

        repeated表明该字段可以重复多个

      4. 标签数字1和2。。。则表示不同字段在序列化后的二进制数据中的布局位置。且标签指不能重复。标签值处于1-15的字段在编码时能得到优化,即标签值和类型信息仅占一个字节,标签值早16-2047的占两个bytes。ProtocolBuffer可以支持字段数量为2的29次方-1.由于repeated时消息必要字段,则尽量使其字段处于1-15之间。

 

三 定义protocol Buffer消息也可以含有枚举,但protocol Buffer的枚举不同与c++/java 枚举值之间用分号而不是逗号。

enum ptr{

    offline=0;

    online=1;

message day01_1{

       requiredint64 ID=1;

       requiredstring name=2;

       optional double start=3;

}

四 嵌套消息字段

 enum ptr{

    offline=0;

    online=1;

message day01_1{

       requiredint64 ID=1;

       requiredstring name=2;

       optionaldouble start=3;

}

message day01_2{

      requiredday01_1 Temp=1;

      requiredstring buf=2;

}

 

五 命令行编译工具

protoc--proto_path=“proto文件所在目录” --cpp_out=“proto文件所在目录”=“proto文件所在目录”/foo.proto

 

总结:1)每个消息中至少包含有一个required类型的字段

2)使用protocol buffer 编译器来生成的代码,一般为.h和.cc文件  

3)每一个字段会生成一个has函数(has_number) clear清除函数(clear_number) set函数(set_number) get函数(number和mutable_number)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值