Safe C结构化序列化以通过网络发送? - C ++

时间:2011-01-17 06:27:01

标签: c++ networking serialization struct

如何使用独立于CPU字节顺序的C样式结构进行序列化?

我已经搜索了解决方案,但我希望找到一个更通用的解决方案,而不是更改结构中每个字段的字节顺序。

2 个答案:

答案 0 :(得分:3)

在语言(或通用系统库)中没有针对此问题的通用解决方案。

(可能有脚本/工具可能会为您自动生成读/写代码,或者可能会为您的结构添加某种“反射”的库,但我没有您的参考。)

应该对这个问题有任何好的答案的奖励信息:除了字节顺序之外,请确保使用编译器指令锁定内存中结构的打包以字节对齐(这对网络数据包来说是正常的)结构域的自然对齐。

答案 1 :(得分:1)

如果你想要一个二进制流,那么你必须处理相关的问题,包括字节序。为了呈现替代方案,您可以创建一个人类可读/字段的字段表示 - 这往往会避免许多陷阱,但往往更冗长,性能更差。无论哪种方式,当存在大量结构/字段时创建函数会有点痛苦。您可以考虑使用支持脚本生成代码,甚至可以从GCC-XML,Open-C ++(如果您的C代码也是合法的C ++程序)或类似代码中驱逐元数据....