Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用boost通过TCP序列化和发送对象 我试图通过TCP连接发送C++ OJBETES: 我的对象都可以使用boost序列化进行序列化 TCP服务器/客户端由boost asio构成_C++_Serialization_Boost_Tcp - Fatal编程技术网

使用boost通过TCP序列化和发送对象 我试图通过TCP连接发送C++ OJBETES: 我的对象都可以使用boost序列化进行序列化 TCP服务器/客户端由boost asio构成

使用boost通过TCP序列化和发送对象 我试图通过TCP连接发送C++ OJBETES: 我的对象都可以使用boost序列化进行序列化 TCP服务器/客户端由boost asio构成,c++,serialization,boost,tcp,C++,Serialization,Boost,Tcp,基本上,我希望发送这样的消息,其中包含消息类型(正在发送的对象的类型)和数据本身(序列化对象)以及数据的大小,以便我可以处理缓冲区(相同类型的对象的大小可以不同,因为它不是POD) 我有点卡住了,因为我不知道如何发送这个。我不明白将数据转换成字符缓冲区的步骤是什么,在缓冲区的开头添加额外的信息(消息类型和大小),然后将该缓冲区提供给tcp连接的发送函数,所有这些都需要尽可能少的拷贝 谢谢 -您可以找到一个关于如何将boost::serialization与boost::asio一起使用的好例子

基本上,我希望发送这样的消息,其中包含消息类型(正在发送的对象的类型)和数据本身(序列化对象)以及数据的大小,以便我可以处理缓冲区(相同类型的对象的大小可以不同,因为它不是POD)

我有点卡住了,因为我不知道如何发送这个。我不明白将数据转换成字符缓冲区的步骤是什么,在缓冲区的开头添加额外的信息(消息类型和大小),然后将该缓冲区提供给tcp连接的发送函数,所有这些都需要尽可能少的拷贝

谢谢

-

您可以找到一个关于如何将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);
std::ostringstream存档\u流;
boost::archive::text\u oarchive归档(归档流);

谢谢你的回答。出站数据的类型是什么?我有代码。出站数据被声明为std::字符串