繁体   English   中英

使用 boost 序列化通过 boost-asio 套接字连接发送序列化类型

[英]sending a serialized type over a boost-asio socket connection using boost serialization

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

这是发生了什么:

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

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

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

它只是一个头痛。 你能帮我吗?

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

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

有关更完整的示例,请参阅此问题我对该问题的回答

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM