我如何知道在使用 Protocol Buffers 库时收到了啥消息?
Posted
技术标签:
【中文标题】我如何知道在使用 Protocol Buffers 库时收到了啥消息?【英文标题】:How can I know what message I've received while using Protocol Buffers library?我如何知道在使用 Protocol Buffers 库时收到了什么消息? 【发布时间】:2010-11-09 16:26:12 【问题描述】:我似乎不太了解 Protocol Buffers,但这对我和我的实际用例来说都是非常重要的问题。
在阅读有关协议缓冲区的文档时,我不明白如何知道应该从流中解码哪条消息?关于某些已定义消息的所有示例,但如果您定义了几个完全不同的消息并且您希望在 2 个进程之间发送这些消息 - 您如何知道您刚刚收到了哪条消息?
或者,Protocol Buffers 可能不会尝试解决这个问题,而是将这个问题留给另一个抽象级别?
或者我应该将消息打包成这样的结构:
message wrapper
required string message_name = 1;
string packed_message = 2;
然后我应该分两个阶段解码消息:首先获取message_name,然后在第二阶段解码真正的打包消息,不是吗?
【问题讨论】:
【参考方案1】:看self describing messages section
【讨论】:
以上是关于我如何知道在使用 Protocol Buffers 库时收到了啥消息?的主要内容,如果未能解决你的问题,请参考以下文章
Protocol buffers--python 实践 protocol buffers vs json
如何在 PHP 中处理 Protocol Buffers 数据