2010-07-02 13 views
12

Sto scrivendo un'applicazione server-client in c e ho bisogno di inviare alcune strutture avanti e indietro.Come serializzare i dati in C

Come posso procedere alla serializzazione dei dati in modo indipendente dalla piattaforma?

+0

Onestamente, se si dispone di strutture di dati abbastanza semplici, vorrei semplicemente eseguire la mia serializzazione. – BobbyShaftoe

+0

In C è possibile utilizzare il formato di serializzazione [Binn] (https://github.com/liteserver/binn) –

risposta

2

Se è necessario preoccuparsi della compatibilità tra diverse versioni del server e del client, utilizzerei i buffer del protocollo di Google o JSON (un'implementazione esistente o scrivere da soli). Se le versioni saranno sempre sincronizzate, è sufficiente scrivere la propria serializzazione binaria o persino personalizzare la struttura in memoria in modo da essere un modulo 'serializzato' e utilizzare le funzioni di accesso per leggerlo e scriverlo. Questo in pratica comporta la memorizzazione di numeri come un numero fisso di byte in un ordine fixed-endian, o qualche formato vlc se si vuole ottenere fantasia, e l'uso di handle di oggetti di qualche tipo (il più semplice è un offset in un array) al posto di puntatori espliciti quando un oggetto ha bisogno di riferirsi a un altro.

Uno dei vantaggi di mantenere i dati in un formato "serializzato" internamente è che è possibile lavorare con enormi set di dati su disco (ad esempio tramite mmap) senza dover scrivere il proprio codice di memorizzazione nella cache complesso.