2

我正在通过 Windows 命名管道将(协议缓冲区)序列化消息从 java 应用程序发送到 .net c# 应用程序。

我已经为这两种环境编译了一个 .proto 文件。在 c# 方面,我使用 protobuf-csharp-port。

我打算在流上使用以长度为前缀的包。

在c#端读取messageLength后,我使用CodedInputStream.pushLimit(messageLength)。然后我想在这样的循环中使用 cis.getBytesUntilLimit() 检索实际消息:

  do
  {
      builder.mergeFrom(cis);
  } while (cis.getBytesUntilLimit() > 0);

但不幸的是,我在 protobuf-csharp-port 中找不到方法 getBytesUntilLimit()。

问题:protobuf-csharp-port 中是否存在 getBytesUntilLimit()?protobuf-csharp-port 是否忠实地在 .net 中实现了 Google 的所有 JAVA API(或至少等效的)?

谢谢你。

4

1 回答 1

1

刚刚阅读了 protobuf-csharp-port 的源代码,发现了一个属性 ReachedLimit。我的问题的答案是:

do
{
    builder.MergeFrom(cis);
} while (!cis.IsAtEnd);
于 2013-10-15T16:37:20.663 回答