2011-07-18 35 views
0

我试图从一个“服务器”向“客户端”发送1kb的数据,但我无法做到正确。 我需要做的事情有: 1)需要使用boost-asio套接字传输数据 2)需要序列化一个我创建的类型(数据包),将包含数据作为字符串或字符*使用boost序列化通过boost-asio套接字连接发送序列化类型

这里是正在发生的事情:

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

第二我用boost text_oarchive序列化它。如果它只包含一个字符串,我没有任何问题序列化数据包类型,但我真正想要的是一种将数据类型作为字符数组序列化的方式(以便它可以更好地与下面的套接字配合使用)

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

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

+0

无法回答没有代码,请编辑您的问题,包括您已完成的代码。 –

回答

0

我看到的一切作为实例和文档中使用某些类型char *,而不是一个字符串,需要一个缓冲

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

查看此questionmy answer以获得更完整的示例。

相关问题