Отправить структуру через сокет в C

Я разрабатываю клиент-серверную программу, и мой клиент должен отправлять сообщения на сервер.

Пример сообщения C структура:

struct Registration
{
char multicastGroup[24];
pid_t clientPid;
};

Фрагмент кода клиента для сериализации структуры

struct Registration regn ;
regn.clientPid = getpid();
strcpy(regn.multicastGroup, "226.1.1.1");

printf("PID:%d\n", regn.clientPid);        
printf("MG:%s\n", regn.multicastGroup);
printf("Size:%d\n", sizeof(regn));           //Size is 28

data = (unsigned char*)malloc(sizeof(regn));
memcpy(data, &regn, sizeof(regn));
printf("Size:%d\n", sizeof(data));           //Size is 4.  

Код сервера для десериализации данных

if(recvfrom(sd, recvBuf, recvBufSize, 0, (struct sockaddr*)&clientAddr, &len) < 0)
{
       printf("Error receiving message from client\n");
}
else
{
       printf("Message received:%s\n", recvBuf);
       printf("Size :%d\n", strlen(recvBuf));
       memcpy(&regn, recvBuf, sizeof(regn));
       printf("PID:%d\n", regn.clientPid);
       printf("MG:%s\n", regn.multicastGroup);
}

После копирования структуры вunsigned char *размер массива всего 4.
Почему данные не полностью копируются в массив?

Сервер не может восстановить структуру из массива char.
Пожалуйста, дайте мне знать, что я делаю не так.

Ответы на вопрос(2)

Ваш ответ на вопрос