Я пишу сервер-клиентское приложение в c и вам нужно отправить некоторые структуры назад и вперед.Как сериализовать данные в C
Как я могу сериализовать данные в независимой платформе?
Я пишу сервер-клиентское приложение в c и вам нужно отправить некоторые структуры назад и вперед.Как сериализовать данные в C
Как я могу сериализовать данные в независимой платформе?
Если вам нужно беспокоиться о совместимости между различными версиями сервера и клиента, я бы использовал буферы протокола Google или JSON (либо существующую реализацию, либо самостоятельно написал). Если версии всегда будут синхронизированы, просто напишите свою собственную двоичную сериализацию или даже настройте структуру в памяти как «сериализованную» форму и используйте функции доступа для ее чтения и записи. Это в основном влечет за собой сохранение чисел в виде фиксированного количества байтов в фиксированном-endian порядке или в каком-либо формате vlc, если вы хотите получить фантазию, и используя дескрипторы объектов какого-либо рода (простейший - смещение в массив) вместо явных указателей когда один объект должен ссылаться на другой.
Одним из очень приятных побочных преимуществ хранения данных в «сериализованной» форме является то, что вы можете работать с огромными наборами данных на диске (например, через mmap
) без необходимости писать свой собственный сложный код кеширования.
Честно говоря, если у вас довольно простые структуры данных, я бы просто прокрутил собственную сериализацию. – BobbyShaftoe
В C вы можете использовать формат сериализации [Binn] (https://github.com/liteserver/binn) –