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?
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?
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.
Onestamente, se si dispone di strutture di dati abbastanza semplici, vorrei semplicemente eseguire la mia serializzazione. – BobbyShaftoe
In C è possibile utilizzare il formato di serializzazione [Binn] (https://github.com/liteserver/binn) –