У меня есть структура, которую я отправляю в сокет UDP:
typedef struct
{
char field_id;
short field_length;
char* field;
} field_t, *field_p;
Я могу прочитать field_id
и field_length
после получения на стороне сервера UDP, однако указатель на field
неверен, как и ожидалось.
Каков наилучший способ правильно отправлять и получать динамический символ *?
У меня есть базовое решение, использующее memcpy
на стороне клиента:
char* data =
(char*)malloc(sizeof(field_t) + (sizeof(char) * strlen(my_field->field)));
memcpy(data, my_field, sizeof(field_t));
memcpy(data+sizeof(field_t), my_field->field, strlen(my_field->field) + 1);
А на стороне сервера:
field_p data = (field_p)buffer;
field_string = (char*)buffer+sizeof(field_t);
Есть ли более чистый способ сделать это или это единственный способ?
Спасибо.