传入消息的格式
- 第一个字节是固定的
- 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 读取就不会停止。
解析具有这种格式的消息的最佳方法是什么?