2010-07-02 2 views
12

Я пишу сервер-клиентское приложение в c и вам нужно отправить некоторые структуры назад и вперед.Как сериализовать данные в C

Как я могу сериализовать данные в независимой платформе?

+0

Честно говоря, если у вас довольно простые структуры данных, я бы просто прокрутил собственную сериализацию. – BobbyShaftoe

+0

В C вы можете использовать формат сериализации [Binn] (https://github.com/liteserver/binn) –

ответ

2

Если вам нужно беспокоиться о совместимости между различными версиями сервера и клиента, я бы использовал буферы протокола Google или JSON (либо существующую реализацию, либо самостоятельно написал). Если версии всегда будут синхронизированы, просто напишите свою собственную двоичную сериализацию или даже настройте структуру в памяти как «сериализованную» форму и используйте функции доступа для ее чтения и записи. Это в основном влечет за собой сохранение чисел в виде фиксированного количества байтов в фиксированном-endian порядке или в каком-либо формате vlc, если вы хотите получить фантазию, и используя дескрипторы объектов какого-либо рода (простейший - смещение в массив) вместо явных указателей когда один объект должен ссылаться на другой.

Одним из очень приятных побочных преимуществ хранения данных в «сериализованной» форме является то, что вы можете работать с огромными наборами данных на диске (например, через mmap) без необходимости писать свой собственный сложный код кеширования.

Смежные вопросы