Tôi cố gắng để phân tích nhiều thông điệp giao thức đệm trong java được tạo ra trong vb.netProtobuf C# để java deserializing nhiều thông điệp
Tôi đang sử dụng tuyệt vời protobuf-net stream nhiều tin nhắn cho java theo dưới đây:
ProtoBuf.Serializer.SerializeWithLengthPrefix(Of Msg)(postStream, msg,
ProtoBuf.PrefixStyle.Base128)
Trong Java, tôi đang sử dụng đoạn mã sau để phân tích các thông điệp
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));
}
vấn đề là sau khi thông điệp đầu tiên được phân tách, nó throws lỗi cho phân tích cú pháp se thời gian có lỗi sau:
com.google.protobuf.InvalidProtocolBufferException: While parsing a protocol message, the input ended unexpectedly in the middle of a field. This could mean either than the input has been truncated or that an embedded message misreported its own length.
Kích thước bộ đệm và kích cỡ thư có giống nhau không? Nếu có, thì làm thế nào tôi nên phân tích nó, đặc biệt là cho các tin nhắn lớn.
Xoá '[C#]' và '[vb.net]' làm câu trả lời dường như không cần tham chiếu đến một trong hai cách này. –
Xin chào, tôi có một vấn đề rất giống với bạn có thể giải thích thêm về giải pháp của bạn. Tôi có C tập tin # mà phân tích một tập tin có chứa nhiều thông điệp proto và nó sử dụng cùng một mã bạn dán ProtoBuf.Serializer.SerializeWithLengthPrefix (Tất Msg) (postStream, msg, ProtoBuf.PrefixStyle.Base128) –