C++使用protobuf(Linux下)

很久之前就聽過protobuf,但是一直沒有使用過,最近在做一個小東西,涉及到C++和go的數據交換,就想到了使用protobuf,由於沒有使用過,所以就先需要一些小小的試驗,接下來就有了本文。

protobuf全稱爲google protocol buffer,是google內部使用的一種數據交換格式,後來開源出來了。protobuf是一種語言無關、平臺無關、擴展性好的用於通信協議、數據存儲的結構化數據串行化方法。很像XML、JSON等,不過它更小、更快、也更簡單。你可以定義自己的數據結構,然後使用代碼生成器生成的代碼來讀寫這個數據結構。

要想使用protobuf,得先進行安裝,在http://code.google.com/p/protobuf/downloads/list下載protobuf源碼包protobuf-2.5.0.tar.gz,在終端下依次執行如下命令進行protobuf的安裝:

  1. tar -zxvf protocol-2.5.0.tar.gz
  2. cd protobuf-2.5.0
  3. ./configure
  4. make
  5. make check
  6. sudo make install

安裝完成後在終端下執行vim ~/.profile打開配置文件,在該文件中添加export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib,然後保存退出,接下來執行source ~/.profile是配置文件修改生效,最後執行protoc --version查看protobuf版本以測試是否安裝成功

執行命令vim msg.proto新建一個名爲msg.proto的文件,並將其打開,在msg.proto中輸入如下內容:

  1. package demo;
  2. message msg
  3. {
  4. required int32 MsgType = 1; //必選字段
  5. required string MsgInfo = 2; //必選字段
  6. required string MsgFrom = 3; //必選字段
  7. optional string opt = 4; //可選字段
  8. }

輸入完成後,保存退出,在終端下執行protoc --cpp_out=. msg.proto生成對應的msg.pb.h和msg.pb.cpp文件

執行命令vim protobuf_test.cc新建一個名爲protobuf_test.cc的C++源文件,並將其打開,在其中輸入如下內容:

  1. #include "msg.pb.h"
  2. #include <iostream>
  3. #include <string>
  4. using namespace std;
  5. int main(int argc, char *argv[]){
  6. demo::msg msg_test;
  7. msg_test.set_msgtype(1);
  8. msg_test.set_msginfo("I am hahaya");
  9. msg_test.set_msgfrom("127.0.0.1");
  10. //將信息格式化到字符串中(寫操作)
  11. string in_data;
  12. msg_test.SerializeToString(&in_data);
  13. cout << "format:" << in_data << endl;
  14. //將信息從字符串中反格式化出來(讀操作)
  15. demo::msg msg_encoding;
  16. msg_encoding.ParseFromString(in_data);
  17. cout << "msg type:" << msg_encoding.msgtype() << endl;
  18. cout << "msg info:" << msg_encoding.msginfo() << endl;
  19. cout << "msg from:" << msg_encoding.msgfrom() << endl;
  20. return 0;
  21. }

輸入完成後,保存退出,在終端下執行g++ protobuff_test.cc msg.pb.cc -o main -lprotobuf -pthread命令進行編譯,編譯成功後執行./main運行。
數據交換使用protobuf真方便,google的東西真心靠譜,更多關於protobuf的使用請在官網http://code.google.com/p/protobuf/上查看~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章