【问题标题】:Parsing java InputStream which has several protobuf inside解析里面有几个protobuf的java InputStream
【发布时间】: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


    【解决方案1】:

    当我从现在开始写入和解析时,我使用 writeDelimitedToparseDelimitedFrom 并且它可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 2015-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多