2013-03-14 155 views
2

我看了很多教程,但我不明白如何使用協議緩衝區如何使用協議緩衝區?

爲什麼「消息用戶」?爲什麼不「上課用戶」?以及Eclipse如何創建這樣的消息? 以及爲什麼name = 2?沒有NAME = 「最大」

ption java_outer_classname="ProtoUser"; 

message User { 

    required int32 id = 1; // DB record ID 
    required string name = 2; 
    required string firstname = 3; 
    required string lastname = 4; 
    required string ssn= 5; 



    // Embedded Address message spec 

    message Address { 
     required int32 id = 1; 
     required string country = 2 [default = "US"];; 
     optional string state = 3; 
     optional string city = 4; 
     optional string street = 5; 
     optional string zip = 6; 



     enum Type { 
     HOME = 0; 

     WORK = 1; 

     } 

     optional Type addrType = 7 [default = HOME]; 

} 
    repeated Address addr = 16; 
} 
+0

你從哪裏得到這個文件?你的問題到底是什麼? – 2013-03-14 15:03:30

+0

我想做一個簡單的示例協議緩衝區 – 2013-03-14 15:06:04

+0

請參閱答案。看起來你沒有仔細閱讀手冊。 – 2013-03-14 15:13:35

回答

4

爲什麼 「消息用戶」?爲什麼不「上課用戶」?

谷歌協議緩衝器(GPB)沒有在它的語法class,它有message代替。 https://developers.google.com/protocol-buffers/docs/style

此文件只是文本文件,它應該有.proto擴展名。畢竟你會運行一個實用程序,它會生成真正的Java類,你可以在你的項目中導入和使用。

https://developers.google.com/protocol-buffers/docs/javatutorial

編譯您Protocol Buffers的

protoc -I=$SRC_DIR --java_out=$DST_DIR $SRC_DIR/addressbook.proto 

required string lastname = 4;

4代表的字段id,而不是一個值,它會被用來生成比特流。

+0

我沒有任何編譯經驗,我無法理解「編譯您的協議緩衝區 protoc -I = $ SRC_DIR --java_out = $ DST_DIR $ SRC_DIR/addressbook.proto ....」 – 2013-03-14 15:20:50

+0

使用CMD? $ SRC_DIR? $ DST_DIR? – 2013-03-14 15:21:54

+0

編譯意味着生成真正的Java文件,以包含在項目代碼中。是的,使用'cmd'來運行'protoc'。原始文件是SRC_DIR,DST_DIR是要放置生成java文件的位置。 – 2013-03-14 15:28:16