c++ - 使用 boost 序列化将 C++ 中的对象序列化为二进制格式以便通过套接字使用是否安全?

标签 c++ serialization boost networking tcp

我知道您可以使用 boost 序列化来序列化为文本格式,然后通过套接字推送,但我想将一类统计数据序列化为二进制格式(出于大小和编码/解码开销的原因) ).为此使用 boost 序列化是否安全?

我特别担心的是:

  1. 不同平台上整数类型大小的差异(主要是 32 位与 64 位)。
    虽然我可以通过使用来自 stdint 的精确大小的整数在很大程度上解决这个问题,但我仍然想了解这种行为。
  2. 系统之间的字节序差异,是否将 boost 序列化为标准字节序(例如:网络排序),然后使用主机的字节序进行反序列化?

这是一个非常好的库,但不幸的是,关于它的二进制功能的文档有些有限,所以我只想确保以这种方式使用它是安全的。

最佳答案

不,一般来说,boost binary 序列化不是机器无关的。参见 here .

关于c++ - 使用 boost 序列化将 C++ 中的对象序列化为二进制格式以便通过套接字使用是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2304061/

相关文章:

c++ - 子对象上的 ostream 获取其父对象的 ostream

c# - 将异常序列化为可抛出

serialization - 如何在没有 old_io 的情况下从字节读取/写入整数值?

c++ - 关于锁定 boost 互斥体的方法的疑问

c++ - Qt QList - removeAll 释放内存

c++ - 嵌入式 Linux 上的轻量级调试

C++纠缠共享指针

c# - 从 Jobject Newtonsoft 继承

c++ - Boost::Signals 的意义何在?

c++ - 如何从 boost::enable_shared_from_this 派生模板模板类?