2

着信メッセージの形式

  • 1バイト目固定
  • ヘッダーの役割を果たす protobuf メッセージ (9 バイト)
  • コンテンツの役割の protobuf メッセージ (4 バイト)

柔軟性のために、1 つのネットワーク パケットに 2 つの 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 読み取りが完了すると停止しないことです。

この種の形式を持つメッセージを解析する最良の方法は何でしょうか?

4

1 に答える 1

3

今から書き込んで解析するときは、 and を使用writeDelimitedToparseDelimitedFromます。

于 2012-09-07T06:48:29.820 に答える