Protobuf使用例子

Protobuf使用例子

ID:39467585

大小:201.50 KB

页数:14页

时间:2019-07-04

Protobuf使用例子_第1页
Protobuf使用例子_第2页
Protobuf使用例子_第3页
Protobuf使用例子_第4页
Protobuf使用例子_第5页
资源描述:

《Protobuf使用例子》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Protobuf使用例子1.protobuf使用整理protobuf序列化反序列化的一种解决方案,protobuf处理成二进制数据流,相比较xml/json更加节省数据流量。protobuf是google提出的解决方案,有比较多的互联网公司采用此种解决方案,protobuf只支持java/python/php支持语言相对比较少。protobuf提供了protobuf-java-xx.jar工具包处理,要求开发者定义.proto文件,然后进行执行编译成对应语言版本的源文件,比如java是编译生成.java源文件。1

2、.1.proto文件编写Protobuf中的proto文件编写,比如定义一个HelloWorld.proto文件//HelloWorld.proto文件为://定义生成java文件所在的包名optionjava_package="com.helloworld.protocol";//生成对应外部类名称optionjava_outer_classname="HelloWorldProtoc";messageHelloWorld{//定义必须属性,类型为int32requiredint32num=1;//定义可选属性

3、,类型为int64optionalint64num2=2;//定义可选属性,类型为stringoptionalstringinfo=3;//定义为list,list里边item类型为stringrepeatedstringmobileList=4;//定义枚举类型,设定default默认值为MALEoptionalSexTypesexType=5[default=MALE];//定义一个message对象optionalHelloWorldExtextInfo=6;enumSexType{MALE=0;//0-男

4、性FEMALE=1;//1-女性UNKNOWN=2;//2-未知}messageHelloWorldExt{requiredint32num=1;optionalint64num2=2;optionalstringinfo=3;}}1.1.执行生成java文件下载到protobuf生成exe文件,名称为:protoc.exe可执行文件编写生成.java文件脚本为:gen-test.bat内容为:protoc--java_out=./HelloWorld.protopause生成.java文件放在当前目录下的com

5、/helloworld/protocol文件夹目录下若在client端-server端开发过程中,比如客户端使用的是Android开发,则可以将生成的protocol源文件拷贝给客户端开发了。通过HelloWorldProtoc文件进行数据携带传输。1.2.通过socket进行通信下载官方提供的protobuf-java.xx.jar包,然后就可以进行开发工作了,简单采用socket进行处理client端请求,server端进行应答处理。处理过程为:Client发出请求>>>用HelloWorldProto进行携

6、带数据,转换成二进制数据流Server端接收请求>>>反序列化>>>对象>>>序列化>>>传输回给客户端代码压缩包为://HelloWorldClient.java文件为:publicclassHelloWorldClient{privatefinalstaticStringHOST_NAME="localhost";privatefinalstaticintPORT=8080;publicstaticvoidmain(String[]args){Socketsocket=null;InputStreamins=

7、null;OutputStreamous=null;try{socket=newSocket(HOST_NAME,PORT);socket.setKeepAlive(true);socket.setSoTimeout(10000);ous=socket.getOutputStream();ins=socket.getInputStream();HelloWorld.Builderbuilder=HelloWorld.newBuilder();builder.setNum(1);builder.setNum2(2L

8、);HelloWorldExt.BuilderextBuilder=HelloWorldExt.newBuilder();extBuilder.setInfo("helloworldext");extBuilder.setNum(1);extBuilder.setNum2(2L);builder.setExtInfo(extBuilder.build());//先写len

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。