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?
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?
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.
Szczerze mówiąc, jeśli masz dość proste struktury danych, po prostu przetasowałbym swoją własną serializację. – BobbyShaftoe
W języku C można użyć formatu serializacji [Binn] (https://github.com/liteserver/binn) –