【问题标题】:sending a serialized type over a boost-asio socket connection using boost serialization使用 boost 序列化通过 boost-asio 套接字连接发送序列化类型
【发布时间】:2011-10-07 09:06:36
【问题描述】:

我正在尝试将 1kb 的数据从“服务器”发送到“客户端”,但我无法正确处理。 在这方面我需要做几件事: 1)需要使用boost-asio sockets来传输数据 2)需要序列化我创建的类型(数据包),它将包含数据作为字符串或字符*

这是怎么回事:

首先,我从服务器上的示例文本文件中获取 1kb 的数据。我得到这个并将其放入我创建的数据包类型中。我在 Packet 中定义了数据字段,以将这些数据保存为 std::string。 (我尝试了 char* 但效果不佳 - 请参阅下一段)。

其次,我使用 boost text_oarchive 对其进行序列化。如果 Packet 类型只包含一个字符串,我对它进行序列化没有问题,但我真正想要的是一种将数据类型序列化为 char 数组的方法(以便它与下面的套接字更好地配合)

第三,我通过 boost asio 套接字发送它。在这里我遇到了一个问题,因为我找不到通过套接字连接发送 std::string 的方法。我作为示例和文档中看到的所有内容都需要使用某种类型的 char* 而不是字符串的缓冲区。

只是头疼。你能帮忙吗?

【问题讨论】:

  • 没有代码无法回答,请编辑您的问题以包含您目前所做的代码。

标签: c++ sockets serialization boost boost-asio


【解决方案1】:

我在示例和文档中看到的所有内容都需要一个缓冲区 使用某种类型的 char* 而不是字符串

这是正确的,尽管使用 Boost.Serialization 和 Boost.Asio 非常简单。您可以使用text_oarchive 序列化为boost::asio::streambuf,然后使用套接字发送生成的流缓冲区内容。

有关该问题的更完整示例,请参阅此questionmy answer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多