vb.net で生成された複数のプロトコル バッファ メッセージを Java で解析しようとしています。
以下のように、優れたprotobuf-netを使用して複数のメッセージをJavaにストリーミングしています。
ProtoBuf.Serializer.SerializeWithLengthPrefix(Of Msg)(postStream, msg,
ProtoBuf.PrefixStyle.Base128)
Javaでは、次のコードを使用してメッセージを解析しています
final byte[] buffer = new byte[4096];
for (int c = ins.read(buffer); c >= 0; c = ins.read(buffer)) {
Msg msg = Msg.parseDelimitedFrom(new ByteArrayInputStream(buffer));
}
問題は、最初のメッセージが解析された後、次のエラーで 2 回目の解析でエラーがスローされることです。
com.google.protobuf.InvalidProtocolBufferException: プロトコル メッセージの解析中に、フィールドの途中で入力が予期せず終了しました。これは、入力が切り捨てられたか、埋め込まれたメッセージがそれ自体の長さを誤って報告したことを意味する可能性があります。
バッファ サイズとメッセージ サイズは同じにする必要がありますか? はいの場合、特に大きなメッセージの場合、どのように解析する必要がありますか。