深入理解Netty编解码、粘包拆包、心跳机制( 五 )
- 解压压缩包 , 并进入你自己解压的目录
tar xyf protobuf-all-3.13.0.tar.gzcd protobuf-3.13.0
- 设置编译目录
./configure --prefix=/usr/local/protobuf
- 安装
makemake install
- 配置环境变量
cd ~open .bash_profile
第二步:然后在打开的bash_profile文件末尾添加如下配置:export PROTOBUF=/usr/local/protobuf export PATH=$PROTOBUF/bin:$PATH
第三步:source一下使文件生效source .bash_profile
- 测试安装结果
protoc --version
使用Google Protobuf以下步骤参考Google Protobuf的github项目的指南 。第一步:添加maven依赖
com.google.protobuf protobuf-java3.11.0
第二步:编写proto文件Message.proto如何编写.proto文件的相关文档说明 , 可以去官网查看 下面写一个例子 , 请看示范:
syntax = "proto3"; //版本option java_outer_classname = "MessagePojo";//生成的外部类名 , 同时也是文件名message Message {int32 id = 1;//Message类的一个属性 , 属性名称是id , 序号为1string content = 2;//Message类的一个属性 , 属性名称是content , 序号为2}
第三步:使用编译器 , 通过.proto文件生成代码在执行上面的安装步骤后 , 进入到 bin 目录下 , 可以看到一个可执行文件 protoc
cd /usr/local/protobuf/bin/
然后复制前面写好的Message.proto文件到此目录下 , 如图所示:文章插图
输入命令:
protoc --java_out=. Message.proto
然后就可以看到生成的MessagePojo.java文件 。 最后把文件复制到IDEA项目中 。文章插图
第四步:在发送端添加编码器 , 在接收端添加解码器
客户端添加编码器 , 对消息进行编码 。
@Overrideprotected void initChannel(SocketChannel ch) throws Exception { //在发送端添加Protobuf编码器ch.pipeline().addLast(new ProtobufEncoder()); ch.pipeline().addLast(new TcpClientHandler());}
服务端添加解码器 , 对消息进行解码 。@Overrideprotected void initChannel(SocketChannel ch) throws Exception { //添加Protobuf解码器 , 构造器需要指定解码具体的对象实例 ch.pipeline().addLast(new ProtobufDecoder(MessagePojo.Message.getDefaultInstance())); //给pipeline管道设置处理器 ch.pipeline().addLast(new TcpServerHandler());}
第五步:发送消息客户端发送消息 , 代码如下:
@Overridepublic void channelActive(ChannelHandlerContext ctx) throws Exception { //使用的是构建者模式进行创建对象 MessagePojo.Message message = MessagePojo.Message.newBuilder().setId(1).setContent("一角钱 , 起飞~").build();ctx.writeAndFlush(message);}
服务端接收到数据 , 并且打印:@Overrideprotected void channelRead0(ChannelHandlerContext ctx, MessagePojo.Message messagePojo) throws Exception {System.out.println("id:" + messagePojo.getId());System.out.println("content:" + messagePojo.getContent());}
- 全新8核国产CPU深入探秘:马上能买到
- 数据|新基建时代,高大全的数据管理解决方案是怎样“炼”成的?
- 16G运存+256G内存,专业骁龙865旗舰,性价比深入人心
- 绿色骑行深入校园,共享单车长途长时需求量提升
- 不被理解的超时代发明,你知道几个?在线膜拜大神,西瓜视频真相
- 深入调查SolarWinds黑客事件 微软已查封一个核心服务器
- 《深入理解Java虚拟机》:Java内存区域
- 基于Netty高性能RPC框架Nifty协议、传输层、编解码
- 深入探讨 JavaScript 逻辑赋值运算符
- 彻底理解 IO 多路复用实现机制