最近项目开发中有涉及到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);
慕码人2483693
阿波罗的战车
相关分类