[英]Protobuf and Non-blocking message send/recv
我正在使用protobuf
和非阻塞libevent
套接字库开发消息传递接口。 由于具有非阻塞属性, libevent
的读取回调可能在消息未完成的某些点(例如,每接收到4096个字节)被调用。 这意味着我必须编写另一个表示每个消息大小的包装器/标头,以便可以将消息正确地解析回protobuf
对象。 有更好的解决方案吗? 还是protobuf
提供API来处理这种情况?
不,没有更好的解决方案。 实际上,即使使用阻塞I / O,您也需要写一个标头来指示大小,因为Protobuf并不是自定界的(默认情况下,protobuf解析器将始终读取直到EOF!)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.