【问题标题】:Protobuf and Non-blocking message send/recvProtobuf 和非阻塞消息发送/接收
【发布时间】:2015-08-15 15:11:38
【问题描述】:

我正在使用protobuf 和非阻塞libevent 套接字库开发我的消息传递接口。由于非阻塞属性,libevent 的读取回调可能会在消息未完成的某些点被调用(例如,每接收 4096 个字节)。这意味着我必须编写另一个包装器/标头来指示每条消息的大小,以便我可以正确地将消息解析回protobuf 对象。有没有更好的解决方案?还是protobuf 提供API 来处理这种情况?

【问题讨论】:

    标签: c++ sockets streaming protocol-buffers libevent


    【解决方案1】:

    不,没有更好的解决方案。事实上,即使在使用阻塞 I/O 时,您也需要编写一个标头来指示大小,因为 Protobuf 不是自定界的(默认情况下,protobuf 解析器将一直读取到 EOF!)。

    【讨论】:

    • 好的。我得到了它。谢谢!
    猜你喜欢
    • 2012-08-24
    • 2021-12-30
    • 1970-01-01
    • 2014-03-08
    • 2013-03-07
    • 2011-05-25
    • 2016-07-16
    • 2014-08-15
    • 2018-02-15
    相关资源
    最近更新 更多