【发布时间】:2012-09-06 08:50:20
【问题描述】:
传入消息的格式
- 第一个字节是固定的
- protobuf 消息作为标头(9 个字节)
- protobuf 消息在内容角色中(4 个字节)
为了灵活性,我在一个网络数据包中实现了两条 protobuf 消息。
这就是我尝试解析消息的方式:
ByteArrayInputStream is = new ByteArrayInputStream(buf.array());
System.out.println(is.available());
is.skip(1);
System.out.println(is.available());
MessageHeader header = MessageHeader.parseFrom(is);
System.out.println(is.available());
输出是
- 14
- 13
- 0
所以问题是 parseFrom 会尝试读取 inputStream 直到结束,并且一旦完成第一次 protobuf 读取就不会停止。
解析具有这种格式的消息的最佳方法是什么?
【问题讨论】:
标签: java parsing inputstream protocol-buffers netty