protobuf入門詳解(在windows下配置protobuf)

      在網絡之間傳遞可讀性強的數據,有xml,還有json。相比之下,json比xml要好。但是他們有個弊端,傳遞的數據是可讀的,也就是沒有加密,使用網絡抓包工具立馬可以抓到what you send and what you receive,那麼怎麼才能傳遞加密了的json串呢?

  簡單的方法,在傳遞json之前,先對json加密,收到數據後再解密。加密和解密算法自然是自己設計最好了。

  後來我找到了bson,就是json的二進制。百度一下可知使用bson最流行的就是MongoDB數據庫。下載bson然後編譯,結果失敗,原來bson要依賴boost,但是boost那麼大啊,只好放棄bson了(我覺得第三方庫有時提供的功能實在太多了,而我們根本不需要那麼完整的功能,所以第三方庫的設計者可以在設計時考慮各個功能之間儘量獨立)。

  後來在網上找到了protobuf,這是google官方內部一直使用的一套數據架構,與json類似,但是效率很高佔用空間很小。在寫這篇博客之前,我試過好幾次,但是每次都沒能完整的編譯運行一個工程出來(protobuf自帶的sample太繁雜了,我一直沒用)。下面詳細敘述如何開始一個protobuf工程:

1,進入vsprojects目錄,打開protobuf.sln,然後選擇生成解決方案。(可選步驟:編譯沒有問題,運行debug目錄下的lite-test.exe和tests.exe,其實看readme.txt中的英文也可以,裏面寫了步驟)(注意:在debug目錄下有libprotobuf.lib和libprotobuf-lite.lib這2個重要文件,還有一個protoc.exe編譯器)

2,將vsprojects目錄下的google目錄複製到vs安裝目錄的VC\\include(這一步很重要,因爲include<>導致編譯器在系統頭文件目錄搜索protobuf頭文件)

PS:新建一個win32控制檯工程,加入 #include <google/protobuf/stubs/common.h>,如果編譯沒有問題,說明目錄設置正確。

3,新建一個person.proto文件,輸入  (學習鏈接:protobuf二:第一個c++示例

message Person
{
required string name = 1;
optional int32  age  = 2;
};

重點:把這個文件和第一步中生成的protoc.exe(這個文件其實官方也可以下載)複製到d盤,然後打開控制檯輸入:

protoc --cpp_out=d:\ person.proto

表示生成目錄爲 d:\ ,原文件爲person.proto。之後會生成person.pb.h和person.pb.cc

4,綜合以上運用:

新建win32控制檯應用

#include "person.pb.h"
#pragma comment(lib,"libprotobuf.lib")

#pragma comment(lib,"libprotobuf-lite.lib")

int main(int,char**)

{

      return 0;

}

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