Java protobuf框架使用向导

ProtoBuf,全称是Protocol Buffers, 它是谷歌内部用的一种高效的、可扩展的对结构化数据进行编码的格式规范。谷歌自己内部很多程序之间的通信协议都用了ProtoBuf。

创新互联建站是一家专业提供梁河企业网站建设,专注与成都网站制作、成都网站建设、H5建站、小程序制作等业务。10年已为梁河众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。

下面介绍的是使用Java ProtoBuf的基本步骤:

1.http://code.google.com/p/protobuf/downloads/list ,选择其中的win版本下载

2.下载一个protobuf-java-2.4.1.jar文件(注意,要与你刚才下的proto.exe版本相同,否则可能出现编译通不过现象)

http://grepcode.com/snapshot/repo1.maven.org/maven2/com.google.protobuf/protobuf-java/2.4.1

3.在proto.exe同级目录,编写一个msg.proto文件:

 
 
 
  1. package tutorial;   
  2. option java_package = "com.protobuftest.protobuf";   
  3. option java_outer_classname = "PersonProbuf";   
  4. message Person {   
  5.   required string name = 1;   
  6.   required int32 id = 2;   
  7.   optional string email = 3;   
  8.   enum PhoneType {   
  9.     MOBILE = 0;   
  10.     HOME = 1;   
  11.     WORK = 2;   
  12.   }   
  13.   message PhoneNumber {   
  14.     required string number = 1;   
  15.     optional PhoneType type = 2 [default = HOME];   
  16.   }   
  17.   repeated PhoneNumber phone = 4;   
  18.   message CountryInfo {  
  19.           required string name = 1;  
  20.           required string code = 2;  
  21.           optional int32 number = 3;  
  22.   }  
  23. }   
  24. message AddressBook {   
  25.   repeated Person person = 1;   
  26. }  

4.使用如下命令编译这个文件:

5.将生成的ProtoBufferPractice.java文件引入eclipse

6.把下载的protobuf-java-2.4.1.jar也引入工程

7.使用方法:

 
 
 
  1. package com.protobuftest;  
  2.  
  3. import java.util.List;  
  4. import com.google.protobuf.InvalidProtocolBufferException;  
  5. import com.protobuftest.protobuf.PersonProbuf;  
  6. import com.protobuftest.protobuf.PersonProbuf.Person;  
  7. import com.protobuftest.protobuf.PersonProbuf.Person.PhoneNumber;  
  8. import com.protobuftest.protobuf.PersonProbuf.Person.PhoneNumberOrBuilder;  
  9. import com.protobuftest.protobuf.PersonProbuf.Person.PhoneType;  
  10.  
  11. public class ProtoBufTest {  
  12. /**  
  13.  * @param args  
  14.  */ 
  15. public static void main(String[] args) {  
  16. // TODO Auto-generated method stub  
  17. PersonProbuf.Person.Builder builder = PersonProbuf.Person.newBuilder();  
  18. builder.setEmail("kkk@email.com");  
  19. builder.setId(1);  
  20. builder.setName("TestName");  
  21. builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("131111111").setType(PersonProbuf.Person.PhoneType.MOBILE));  
  22. builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("011111").setType(PersonProbuf.Person.PhoneType.HOME));  
  23. Person person = builder.build();  
  24. byte[] buf = person.toByteArray();  
  25. try {  
  26. Person person2 = PersonProbuf.Person.parseFrom(buf);  
  27. System.out.println(person2.getName() + ", " + person2.getEmail());  
  28. List lstPhones = person2.getPhoneList();  
  29. for (PhoneNumber phoneNumber : lstPhones) {  
  30. System.out.println(phoneNumber.getNumber());  
  31. }  
  32. } catch (InvalidProtocolBufferException e) {  
  33. // TODO Auto-generated catch block  
  34. e.printStackTrace();  
  35. }  
  36. System.out.println(buf);  
  37. }  

源文档

网页标题:Java protobuf框架使用向导
文章转载:http://www.shufengxianlan.com/qtweb/news7/308257.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联