我试图通过TCP连接发送C++ OjBeBTS:
基本上我想发送这样的消息,它包含消息类型(被发送对象的类型)和数据本身(序列化对象)以及数据的大小,这样我就可以处理缓冲区(对于同一类型的对象,大小可能会有所不同,因为它不是POD)。
我有点困了,因为我不知道怎么发这个。我不明白将数据转换为char缓冲区,并在缓冲区的开头添加额外的信息(消息类型和大小),然后将这个缓冲区提供给tcp连接的send函数,所有这些都需要尽可能少地复制。
谢谢。
Here 您可以找到一个很好的例子来说明如何将boost::serialization与boost::asio一起使用。
像这样的东西是你需要的核心:
std::ostringstream archive_stream; boost::archive::text_oarchive archive(archive_stream); archive << YOUR_DATA; outbound_data_ = archive_stream.str(); boost::asio::async_write(socket_, boost::asio::buffer(outbound_data_), handler);