小编gau*_*v46的帖子

Protobuf c#to java反序列化多条消息

我试图解析在vb.net中生成的java中的多个协议缓冲区消息

我正在使用优秀的protobuf-net将多个消息流式传输到java,如下所示:

ProtoBuf.Serializer.SerializeWithLengthPrefix(Of Msg)(postStream, msg, 
       ProtoBuf.PrefixStyle.Base128)
Run Code Online (Sandbox Code Playgroud)

在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));
}
Run Code Online (Sandbox Code Playgroud)

问题是在解析第一个消息之后,它会在第二次解析时抛出错误并出现以下错误:

com.google.protobuf.InvalidProtocolBufferException:在解析协议消息时,输入意外地在字段中间结束.这可能意味着要么输入被截断,要么嵌入的消息误报了自己的长度.

缓冲区大小和邮件大小应该相同吗?如果是,那么我应该如何解析它,特别是对于大型消息.

java protocol-buffers protobuf-net

5
推荐指数
1
解决办法
1302
查看次数

OS中的服务列表 - golang

如何在Windows下的golang中获取当前安装的服务列表?

我需要这样的东西:

golang中当前正在运行的进程列表

但是对于服务而不是过程.

operating-system windows-services go

2
推荐指数
1
解决办法
1544
查看次数