不了解protobuf的先去了解下


项目需要用protobuf进行数据传输所以最近找了找资料,下面给大家一些我的经验


下拉找到3.1.0的压缩包
protoc-3.1.0-win32.zip

解压到任意盘的根目录,我的在C盘放着,


然后配置环境变量
protobuf3.1.0 生成java文件------多协议传输类型说明
右击此电脑点击属性》》高级系统设置》》环境变量》》点击系统变量的Path点击编辑
添加  ;C:\protoc-3.1.0-win32\bin     点击确定

打开cmd执行   protoc --version
protobuf3.1.0 生成java文件------多协议传输类型说明
配置完毕,下来开始编译

我在D盘创建了一个文件夹 用来编译保存生成的文件
然后再文件下新建java文件夹
接下来我们创建一个msg.proto


protobuf3.1.0 生成java文件------多协议传输类型说明
syntax 必须要加上相应的版本,否则编译会出错

v3版本貌似不需要添加属性前面的字段,加上之后编译出错


好了,接下来我们开始编译
protobuf3.1.0 生成java文件------多协议传输类型说明


点击目录栏,输入cmd如下图
protobuf3.1.0 生成java文件------多协议传输类型说明
protobuf3.1.0 生成java文件------多协议传输类型说明

接下来输入命令编译java文件

protoc.exe msg.proto --java_out=./

protobuf3.1.0 生成java文件------多协议传输类型说明

可以看到msg的java文件生成了,接下来我们说说netty中的应用


大家应该都知道netty自己封装的protobuf只能传输单一的数据类型如下图


protobuf3.1.0 生成java文件------多协议传输类型说明

只能解码出LoginRequest的消息,但是我们实际中肯定是多种协议,我们来定义一个proto文件。

protobuf3.1.0 生成java文件------多协议传输类型说明

注意一下 枚举这块enum,开始的第一个必须为0,不然编译出错,然后大家了解一下oneof这个字段

生成java文件之后我们再进行netty的改造

这里报错是因为没加包路径加上就好了

protobuf3.1.0 生成java文件------多协议传输类型说明protobuf3.1.0 生成java文件------多协议传输类型说明

protobuf3.1.0 生成java文件------多协议传输类型说明

客户端发送过来的是Pig数据,而服务端回应的是一组人类的消息。
大概就是这样吧如有不足请大佬们指教.


相关文章: