Javaprotobuf框架使用向导

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

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

  1.;,选择其中的win版本下载

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

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

  packagetutorial;   optionjava_package="com.protobuftest.protobuf";   optionjava_outer_classname="PersonProbuf";   messagePerson{   requiredstringname=1;   requiredint32id=2;   optionalstringemail=3;   enumPhoneType{   MOBILE=0;   HOME=1;   WORK=2;   }   messagePhoneNumber{   requiredstringnumber=1;   optionalPhoneTypetype=2[default=HOME];   }   repeatedPhoneNumberphone=4;   messageCountryInfo{   requiredstringname=1;   requiredstringcode=2;   optionalint32number=3;   }   }   messageAddressBook{   repeatedPersonperson=1;   }

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

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

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

  7.使用方法:

  packagecom.protobuftest;   importjava.util.List;   importcom.google.protobuf.InvalidProtocolBufferException;   importcom.protobuftest.protobuf.PersonProbuf;   importcom.protobuftest.protobuf.PersonProbuf.Person;   importcom.protobuftest.protobuf.PersonProbuf.Person.PhoneNumber;   importcom.protobuftest.protobuf.PersonProbuf.Person.PhoneNumberOrBuilder;   importcom.protobuftest.protobuf.PersonProbuf.Person.PhoneType;   publicclassProtoBufTest{   /**   *@paramargs   */  publicstaticvoidmain(String[]args){   //TODOAuto-generatedmethodstub   PersonProbuf.Person.Builderbuilder=PersonProbuf.Person.newBuilder();   builder.setEmail("");   builder.setId(1);   builder.setName("TestName");   builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("131111111").setType(PersonProbuf.Person.PhoneType.MOBILE));   builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("011111").setType(PersonProbuf.Person.PhoneType.HOME));   Personperson=builder.build();   byte[]buf=person.toByteArray();   try{   Personperson2=PersonProbuf.Person.parseFrom(buf);   System.out.println(person2.getName()+","+person2.getEmail());   List<PhoneNumber>lstPhones=person2.getPhoneList();   for(PhoneNumberphoneNumber:lstPhones){   System.out.println(phoneNumber.getNumber());   }   }catch(InvalidProtocolBufferExceptione){   //TODOAuto-generatedcatchblock   e.printStackTrace();   }   System.out.println(buf);   }   }

  源文档 <;

尽量不要讲同事朋友的八卦。

Javaprotobuf框架使用向导

相关文章:

你感兴趣的文章:

标签云: