【发布时间】:2011-04-15 10:26:20
【问题描述】:
我在使用 protobuf 进行进程间通信时遇到了一些问题。 Protobuf 允许一组序列化格式:
SerializeToArray(void * data, int size) : bool
SerializeToCodedStream(google::protobuf::io::CodeOutputStream * output) : bool
SerializeToFileDescriptor(int file_descriptor) : bool
SerializeToOstream(ostream * output)
我的问题是,我不知道如何将它与我正在使用的 boost asio 套接字一起使用,因为我实现了它们来发送字符串:
boost::asio::write(socket, boost::asio::buffer(message),
boost::asio::transfer_all(), ignored_error);
但我想发送 ostream。
【问题讨论】:
-
你可以使用
ostringstream,用protobuf序列化它,将它的字符串值.str()转换成一个boost缓冲区,然后发送。您不打算在消息交换套接字上自动使用完整的流语义,是吗?
标签: c++ sockets stream boost-asio