【问题标题】:Serialize and send objects by TCP using boost使用 boost 通过 TCP 序列化和发送对象
【发布时间】:2010-11-03 21:28:11
【问题描述】:

我正在尝试通过 tcp 连接发送 C++ ojbect:

  • 我的对象都是可序列化的,使用 boost 序列化。
  • TCP 服务器/客户端是用 boost asio 制作的。

基本上我想发送这样的消息,它将包含消息类型(正在发送的对象的类型)和数据本身(序列化对象)和数据的大小,以便我可以处理缓冲区(大小同一类型的对象可能会有所不同,因为它不是 POD)。

我有点卡住了,因为我不知道如何发送这个。我不明白将数据转换为 char 缓冲区的步骤,并在缓冲区的开头添加额外的信息(消息类型和大小),然后将此缓冲区提供给 tcp 连接的发送函数,所有这一切都尽可能少地复制。

谢谢。

-

【问题讨论】:

    标签: c++ serialization boost tcp


    【解决方案1】:

    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);
    

    【讨论】:

    • 感谢您的回答。你给出站数据什么类型?
    • 我得到了代码here。 outbound_data_ 被声明为 std::string
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多