不了解protobuf的先去了解下
项目需要用protobuf进行数据传输所以最近找了找资料,下面给大家一些我的经验
首先去下载protobuf3.1.0的压缩包 网址:
https://github.com/google/protobuf/releases?after=v3.4.0rc1(github下载网址)
下拉找到3.1.0的压缩包
protoc-3.1.0-win32.zip
然后配置环境变量
右击此电脑点击属性》》高级系统设置》》环境变量》》点击系统变量的Path点击编辑
添加 ;C:\protoc-3.1.0-win32\bin 点击确定
打开cmd执行 protoc --version
配置完毕,下来开始编译
我在D盘创建了一个文件夹 用来编译保存生成的文件
然后再文件下新建java文件夹
接下来我们创建一个msg.proto
syntax 必须要加上相应的版本,否则编译会出错
v3版本貌似不需要添加属性前面的字段,加上之后编译出错
好了,接下来我们开始编译
点击目录栏,输入cmd如下图
接下来输入命令编译java文件
protoc.exe msg.proto --java_out=./
可以看到msg的java文件生成了,接下来我们说说netty中的应用
大家应该都知道netty自己封装的protobuf只能传输单一的数据类型如下图
只能解码出LoginRequest的消息,但是我们实际中肯定是多种协议,我们来定义一个proto文件。
注意一下 枚举这块enum,开始的第一个必须为0,不然编译出错,然后大家了解一下oneof这个字段
生成java文件之后我们再进行netty的改造
这里报错是因为没加包路径加上就好了
客户端发送过来的是Pig数据,而服务端回应的是一组人类的消息。
大概就是这样吧如有不足请大佬们指教.