Protobuf在Java中的使用

1.Protobuf的理解

是用于结构化数据串行化的灵活、高效、自动的方法,有如XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的情况下更新数据结构,总的来说就是传输协议中的一种。Protobuf的官方网址为http://code.google.com/apis/protocolbuffers/docs/tutorials.html 。

核心:

1,.proto文件

相当于确定数据协议,数据结构中存在哪些数据,数据类型是怎么样


2,modifiers

2-1 required 不可以增加或删除的字段,必须初始化

2-2 optional 可选字段,可删除,可以不初始化

2-3 repeated 可重复字段, 对应到java文件里,生成的是List


3,Message

在proto文件里,数据的协议时以Message的形式表现的。


4, Build

生成具体的java类时,例如Person.java,同时会存在build方法。文档的意思是对于转化后的数据,具有唯一性,build提供了便利的方法来初始化这些数据。


2.Protobuf的安装与在netty中的使用

1.首先要在Java项目中新创建一个.proto文件,相当于确定数据协议,数据结构中存在哪些数据,数据类型是怎么样
option java_package = "cn.huikey.chat.proto";//写的是生成文件的包名
option java_outer_classname = "ChatMessage";//生成的类文件名

//消息类
message  Message{
	optional string senderName = 2;
	optional string receiverName=6;
	optional string content=9;
	optional string type=10;
	optional string palindType=11; 
	optional int32 status=12;
}
</pre><pre name="code" class="java" style="font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px;">3.添加jar,protocol.exe(jar与exe必须为同一版本),编写cmd文件
@ECHO OFF
cd /d D:\MyEclipseWork\ProtobufServer\proto   //proto文件名根目录
protoc --java_out=../chat chatMessage.proto    //资源包+空格+proto文件名
pause

4.运行cmd文件即可

5.protobuf在netty中的使用

1.protobuf的数据读取
a.数据的写入
 Builder Builder = Message.newBuilder();
Builder.setType("0");
Builder.setReceiverName("admin");
byte[] Bytes = Builder.build().toByteArray();
ByteBuf Buf = Unpooled.buffer(Bytes.length);
Buf.writeBytes(Bytes);
channel.writeAndFlush(Buf); 


 b.数据的读取 
Message message=(Message) msg;
System.out.println(message);
c.Protobuf的赋值
 ChatMessage.Message.newBuilder()
.setType(Contact.FRIENDSTRUE)
.setReceiverName(message.getReceiverName()
.setSenderName(message.getSenderName())
.setStatus(Contact.SUCCESS)
.setContent("添加好友成功!")).build;





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

家有小辉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值