2010-07-02 15 views
12

Ich schreibe eine Server-Client-Anwendung in c und müssen einige Strukturen hin und her senden.Wie serialisieren Daten in C

Wie kann ich die Daten plattformunabhängig serialisieren?

+0

Ehrlich gesagt, wenn Sie ziemlich einfache Datenstrukturen haben, würde ich nur meine eigene Serialisierung rollen. – BobbyShaftoe

+0

In C können Sie das Serialisierungsformat [Binn] (https://github.com/liteserver/binn) verwenden –

Antwort

2

Wenn Sie sich um die Kompatibilität zwischen verschiedenen Versionen des Servers und des Clients kümmern müssen, verwende ich Google-Protokollpuffer oder JSON (entweder eine vorhandene Implementierung, oder schreiben Sie Ihre eigene). Wenn die Versionen immer synchron sind, schreiben Sie einfach Ihre eigene binäre Serialisierung oder passen Sie die speicherinterne Struktur sogar als serialisierte Form an und verwenden Sie Zugriffsfunktionen, um sie zu lesen und zu schreiben. Das bedeutet im Grunde, Zahlen als eine feste Anzahl von Bytes in einer festen Endian-Reihenfolge oder ein vlc-Format zu speichern, wenn Sie etwas Besonderes wünschen und Objekt-Handles irgendeiner Art (am einfachsten ist ein Offset in ein Array) anstelle von expliziten Zeigern verwenden wenn ein Objekt sich auf ein anderes beziehen muss.

Ein wirklich netter Nebeneffekt des internen Speicherns von Daten in serialisierter Form ist, dass Sie mit riesigen Datensätzen auf der Festplatte arbeiten können (z. B. über mmap), ohne Ihren eigenen komplexen Caching-Code schreiben zu müssen.

Verwandte Themen