Estoy escribiendo una aplicación cliente-servidor en c y necesito enviar algunas estructuras hacia adelante y hacia atrás.Cómo serializar datos en C
¿Cómo puedo hacer para serializar los datos de forma independiente de la plataforma?
Estoy escribiendo una aplicación cliente-servidor en c y necesito enviar algunas estructuras hacia adelante y hacia atrás.Cómo serializar datos en C
¿Cómo puedo hacer para serializar los datos de forma independiente de la plataforma?
Si necesita preocuparse por la compatibilidad entre las diferentes versiones del servidor y del cliente, usaría los búferes del protocolo de Google o JSON (ya sea una implementación existente, o escriba la suya propia). Si las versiones siempre estarán sincronizadas, solo escriba su propia serialización binaria, o incluso adapte la estructura en memoria para que sea una forma 'serializada' y use las funciones de acceso para leerla y escribirla. Básicamente, esto implica almacenar números como un número fijo de bytes en un pedido de endian fijo, o algún formato de vlc si desea hacerse elegante, y usar manejadores de objetos de algún tipo (lo más simple es un desplazamiento en una matriz) en lugar de punteros explícitos cuando un objeto necesita referirse a otro.
Un beneficio lateral muy agradable de mantener los datos en forma 'serializada' internamente es que puede trabajar con enormes conjuntos de datos en el disco (por ejemplo, a través de mmap
) sin tener que escribir su propio código de caché complejo.
Honestamente, si tiene estructuras de datos bastante simples, simplemente lanzaría mi propia serialización. – BobbyShaftoe
En C, puede usar el formato de serialización [Binn] (https://github.com/liteserver/binn) –