为了账号安全,请及时绑定邮箱和手机立即绑定

java使用protobuf遇到的问题

java使用protobuf遇到的问题

米琪卡哇伊 2018-12-06 18:19:20
最近项目开发中有涉及到protobuf的模块,详情如下:   待开发的tcp客户端与服务端保持socket长链接,只支持protobuf编码格式的数据包,用的netty4框架,LengthFieldBasedFrameDecoder解码器,为什么没有用自带的protobuf解码器,因为涉及到多个protobuf实例。初始的socket连接建立没有问题,服务端要求的心跳响应也能回复,链路不会断开。但是客户端向服务端发送数据包时,服务端似乎并没有收到,服务端向客户端回传消息时,收到的似乎与预期不相符,并且不能反序列化为对象。 下面是收到服务端回传的消息时处理的代码 ByteBuf buf = (ByteBuf) msg; int len = buf.readableBytes(); byte[] req = new byte[len]; buf.readBytes(req); byte[] vct = Arrays.copyOfRange(req, 12, req.length - 1); VctMessage rsp = VctMessage.parseFrom(vct);
查看完整描述

3 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

原因居然是登录认证前没有让服务端设置编码为protobuf,不得不说做二次开发的文档真是不可靠,折腾。

查看完整回答
反对 回复 2018-12-16
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

你看一下《Netty权威指南》第8章, 它上面用了两个Decoder, ProtobufVarint32FrameDecoder和ProtobufDecoder,我没试过,你试一下

查看完整回答
反对 回复 2018-12-16
  • 3 回答
  • 0 关注
  • 744 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信