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

时间:2010-02-20 22:50:29

标签: c++ serialization boost networking tcp

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

我特别担心的是:

  1. 不同平台上的整数类型大小之间的差异(主要是32位与64位) 虽然我可以通过使用来自stdint的精确大小的整数来解决这个问题,但我仍然希望了解这种行为。
  2. 系统之间的字节序差异,是否会提升序列化为标准字节序(例如:网络排序),然后使用主机的字节顺序进行反序列化?
  3. 这是一个非常好的库,但遗憾的是它的二进制功能的文档有些限制,所以我只想确保以这种方式使用它是安全的。

3 个答案:

答案 0 :(得分:5)

不,通常情况下, 二进制 序列化与机器无关。请参阅here

答案 1 :(得分:5)

它可用,我听过很多关于谷歌的protobuf。它有一个C和C++ binding

答案 2 :(得分:1)

你应该看看Apache Thrift。它是由Facebook设计的跨平台序列化/反序列化。