Я пытаюсь сериализовать структуру для отправки в виде UDP-сообщения. У меня проблема в том, что структура содержит массив подструктур переменной длины, как показано ниже:
struct SubStruct
{
short val1;
short val2;
};
struct Message
{
short numSubStructs;
SubStruct* structs;
};
Метод, который я использую для отправки своих сообщений фиксированной длины, заключается в приведении структуры к unsigned char*
. Ниже MSG_LENGTH
равно sizeof(short) + numSubStructs * sizeof(SubStruct)
send(socket, reinterpret_cast<unsigned char*>(&someMessage), MSG_LENGTH);
Это прекрасно работает для всех моих сообщений фиксированной длины, но не для сообщений переменной длины. Глядя на данные, отправленные через сокет, я почти уверен, что он отправляет фактический адрес указателя структур.
У меня вопрос: есть ли способ сериализации такой структуры, кроме циклического перемещения по указателю (массиву) и добавления в некоторый буфер?
Спасибо