我正在尝试解析在 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));
}
问题是在解析第一条消息后,第二次解析时抛出错误,并出现以下错误:
com.google.protobuf.InvalidProtocolBufferException:解析协议消息时,输入在字段中间意外结束。这可能意味着输入被截断或嵌入的消息误报了自己的长度。
缓冲区大小和消息大小应该相同吗?如果是,那么我应该如何解析它,尤其是对于大消息。