2010-07-02 11 views
12

Piszę aplikację serwer-klient wc i muszę przesłać pewne struktury tam iz powrotem.Jak serializować dane w C

Jak mogę przeprowadzić szeregowanie danych w sposób niezależny od platformy?

+0

Szczerze mówiąc, jeśli masz dość proste struktury danych, po prostu przetasowałbym swoją własną serializację. – BobbyShaftoe

+0

W języku C można użyć formatu serializacji [Binn] (https://github.com/liteserver/binn) –

Odpowiedz

2

Jeśli musisz się martwić o zgodność między różnymi wersjami serwera i klienta, użyłabym buforów protokołu Google lub JSON (albo istniejącej implementacji, albo wpisz własną). Jeśli wersje będą zawsze zsynchronizowane, po prostu napisz własną serializację binarną lub nawet dostosuj strukturę w pamięci do postaci "serializowanej" i użyj funkcji dostępu do odczytu i zapisu. Zasadniczo polega to na przechowywaniu liczb jako stałej liczby bajtów w zleceniu fixed-endian lub w jakimś formacie vlc, jeśli chcesz mieć ochotę, i użyciu uchwytów obiektów jakiegoś rodzaju (najprostszy jest offset w tablicy) w miejsce wyraźnych wskaźników kiedy jeden obiekt musi odnosić się do drugiego.

Jedną z naprawdę dobrych korzyści z utrzymywania danych w postaci "seryjnej" jest to, że można pracować z ogromnymi zbiorami danych na dysku (na przykład poprzez mmap) bez konieczności pisania własnego złożonego kodu do buforowania.