【发布时间】:2023-03-18 12:46:01
【问题描述】:
我想序列化一个类的实例并使用 C++/Boost 库通过 TCP 连接发送它们。那里有太多的工作示例......有些使用文本流作为缓冲区,有些使用tcp::iostream。我不确定哪一个适合我的需要。
要求:
- 不同架构的可移植性(字节序和位数应该不是问题)
- 数据必须是二进制格式。 (没有文字)
当前代码:
// Client side:
boost::asio::streambuf b;
std::ostream os(&b);
boost::archive::binary_oarchive oa(os);
message m; // The `message' class is serializable
// construct `m'
oa << m;
boost::asio::write(socket,b.data(),boost::asio::transfer_all());
// Server side:
boost::asio::streambuf b;
std::istream is(&b);
boost::archive::binary_iarchive ia(is);
boost::asio::read(socket,b,boost::asio::transfer_all());
message m;
ia >> m;
这不起作用。服务器以invalid signature 异常退出。
【问题讨论】:
标签: c++ serialization boost boost-asio