Protobuf 和非阻塞消息发送/接收
Posted
技术标签:
【中文标题】Protobuf 和非阻塞消息发送/接收【英文标题】:Protobuf and Non-blocking message send/recv 【发布时间】:2015-08-15 15:11:38 【问题描述】:我正在使用protobuf
和非阻塞libevent
套接字库开发我的消息传递接口。由于非阻塞属性,libevent
的读取回调可能会在消息未完成的某些点被调用(例如,每接收 4096 个字节)。这意味着我必须编写另一个包装器/标头来指示每条消息的大小,以便我可以正确地将消息解析回protobuf
对象。有没有更好的解决方案?还是protobuf
提供API 来处理这种情况?
【问题讨论】:
【参考方案1】:不,没有更好的解决方案。事实上,即使在使用阻塞 I/O 时,您也需要编写一个标头来指示大小,因为 Protobuf 不是自定界的(默认情况下,protobuf 解析器将一直读取到 EOF!)。
【讨论】:
好的。我得到了它。谢谢!以上是关于Protobuf 和非阻塞消息发送/接收的主要内容,如果未能解决你的问题,请参考以下文章