Если речь идет о бинарной передаче, то в силу того, что клиент и сервер это могут быть абсолютно разные по архитектуре хосты, а сам клиент и сервер могут быть собраны с различными настройками компилятора, тем более разной разрядностью компилятора, структуры упаковывают в так называемый сетевой формат с помощью так называемых функций конвертации
uint32_t htonl(uint32_t hostlong); — конвертирует 32-битную беззнаковую величину из локального порядка байтов в сетевой;
uint16_t htons(uint16_t hostshort); — конвертирует 16-битную беззнаковую величину из локального порядка байтов в сетевой;
на сервере в свою очередь используются обратные приведенным для конвертировки из сетевого формата в локального хоста ntohl, ntohs
Поэтому, каждый член данных структуры должен быть упакован приведенными мной функциями перед отправкой, а сама структура должна быть оформлена платформо-независимыми типами