如何在C中序列化数据

我在c中编写服务器 – 客户端应用程序,需要来回发送一些结构。

如何以独立于平台的方式序列化数据?

如果您需要担心服务器和客户端的不同版本之间的兼容性,我会使用Google协议缓冲区或JSON(现有实现,或自己编写)。 如果版本始终保持同步,只需编写自己的二进制序列化,或者甚至将内存结构定制为“序列化”forms,并使用访问函数来读取和写入它。 这基本上需要以固定字节顺序将数字存储为固定数量的字节,或者如果你想获得花哨的某种vlc格式,并使用某种类型的对象句柄(最简单的是数组的偏移量)代替显式指针当一个对象需要引用另一个对象时。

在内部以“序列化”forms保存数据的一个非常好的好处是,您可以在磁盘上处理大量数据集(例如通过mmap ),而无需编写自己的复杂缓存代码。