Protocol buffers 当客户端/服务器中的Google协议缓冲区具有不同的数据包类型时

Protocol buffers 当客户端/服务器中的Google协议缓冲区具有不同的数据包类型时,protocol-buffers,Protocol Buffers,我想在tcp/ip通信中使用协议缓冲区,但我可能有不同的数据包要发送/接收,如何区分协议缓冲区上的数据包类型,似乎我必须知道下一个使用协议缓冲区的数据包类型,但在我的情况下,我可能事先不知道类型 有什么想法吗?协议缓冲区不适合这种通信吗?请参阅文档的一节 注:Jon Skeet的答案一如既往地完整。Pangea注意到了自我描述的信息,但实际上我建议,如果您不知道可能涉及哪种类型,但您知道可用类型的完整范围。(这取决于你所说的“我可能事先不知道类型”的确切含义。) 基本上,这两种技术都是“元数据,

我想在tcp/ip通信中使用协议缓冲区,但我可能有不同的数据包要发送/接收,如何区分协议缓冲区上的数据包类型,似乎我必须知道下一个使用协议缓冲区的数据包类型,但在我的情况下,我可能事先不知道类型

有什么想法吗?协议缓冲区不适合这种通信吗?

请参阅文档的一节


注:Jon Skeet的答案一如既往地完整。

Pangea注意到了自我描述的信息,但实际上我建议,如果您不知道可能涉及哪种类型,但您知道可用类型的完整范围。(这取决于你所说的“我可能事先不知道类型”的确切含义。)

基本上,这两种技术都是“元数据,数据”方法——这取决于元数据是需要包含消息描述符,还是仅仅需要一个鉴别器来说明下一种消息类型


当然,您可以将这两种技术结合起来—创建一个联合类型,其中所涉及的类型之一是自描述类型。如果您知道您通常期望的是什么,这将非常有用,但是您偶尔会在不事先知道消息类型的情况下得到一些“不同”的消息。

不确定为什么很少有人投票关闭此消息。这是一个完整答案的有效问题+1