我想序列化一个类的实例并使用 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
服务器异常退出。