着信メッセージの形式
- 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 読み取りが完了すると停止しないことです。
この種の形式を持つメッセージを解析する最良の方法は何でしょうか?