1

我需要在计算机之间交换 protobuf-net 对象和文件,并试图找出最好的方法。A 有没有办法通知 B 后面的对象是 protobuf 或文件?或者,当一个文件被传输时,有没有办法知道文件已经结束并且后面的 Byte[] 是一个 protobuf?

使用 C# 4.0、Visual Studio 2010

谢谢,马尼什

4

1 回答 1

1

这与 protobuf 或文件无关,与您的通信协议有关,特别是“框架”。这意味着简单:您如何在单个流中划分子消息。例如,如果这是一个原始套接字,您可能会选择发送(全部)

  • 一个简短的消息类型,可能是一个字节:01 表示文件,02 表示特定文件的 protobuf 消息
  • 长度前缀(通常为 4 字节网络字节顺序)
  • 有效载荷,由先前的字节数组成

然后冲洗并重复每条消息。

你没有说明你在问什么通讯,所以我可以更具体。

顺便说一句,另一种方法是将文件视为带有 byte[] 成员的 protobuf 消息 - 虽然主要适用于小文件

于 2012-05-20T11:53:32.553 回答