我正在尝试通过 tcp 连接发送 C++ 对象:
- 我的对象都是可序列化的,使用增强序列化。
- TCP服务器/客户端是用boost asio制作的。
基本上我想发送这样的消息,其中包含消息类型(正在发送的对象的类型)和数据本身(序列化对象)以及数据的大小,以便我可以处理缓冲区(大小可以根据不同的情况而变化)相同类型的对象,因为它不是 POD)。
我有点卡住了,因为我不知道如何发送这个。我不明白将数据转换为字符缓冲区的步骤是什么,并在缓冲区的开头添加额外的信息(消息类型和大小),然后将此缓冲区提供给tcp连接的发送函数,所有这一切都需要尽可能少地复制。
Thanks.
-
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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)