1.指定proto版本,預設是2 eg:syntax = 「proto3」;必須在檔案的首行
2.指定包 package 類似於c++的命名空間
3.定義message
4.具體參見上文部落格
note:前後協議相容擴充套件的時候,每個字段一定要保證tag是一致的,並且不能復用,否則可能出現資料錯亂問題。協議tag保證一致,對定義順序可以不保持一致:因為在序列化和反序列化的時候是根據tag來打包的。和定義順序無關。
5.demo
syntax = "proto3";
message book
message student
message bookex
enum op_tion
其中為了測試方便,認為bookex是book的擴充套件協議。
#include "stdafx.h"
#include
#include "addr.pb.h"
using
namespace
std;
int _tmain(int argc, _tchar* argv)
return
0;}
執行結果:解包和tag有關,和定義順序無關
Proto3序列化協議
對於網際網路應用來說,客戶端 客戶端 客戶端 服務端之間需要資料的互動,其資料傳輸是二進位製流的方式在網際網路上傳輸,因為需要一種手段將資料物件編碼為一種可以在網路上傳輸的二進位製流,這個過程就叫做序列化。同樣的,客戶端在收到二進位製流需要解碼出資料,這個過程叫反序列。簡單理解就是序列化就是按照某種...
TinEngine使用(3) 語法
python部分 tin標記方面 結語結語 tinengine作為渲染標記語言的文字框,實際上在gui介面中有很多實用的地方,以下是比較常見的。這是最根本的,乙個文字渲染類的元件,最主要的功能就是渲染顯示富文字。在軟體介面中,tinengine可以以更豐富的文字格式顯示內容,使介面更美觀 資訊顯示能...
proto 在c 和c 的使用。
1 c linux 下馬 編譯hadoop 2.7.3 要求 protobuf 2.5.0,只需要將鏈結改為 tar zxvf protobuf 2.6.1.tar.gz cd protobuf 2.6.1 configure make make check sudo make install 我在...