Semplice, tratta l'header e la stringa come due oggetti separati e poi li invii.
legge l'header, lo verifica e poi legge la stringa.

codice:
char *buffer[SIZE];
char *header, *string;
int fd;

memset(buffer, 0, sizeof(buffer));
header = buffer;
string = buffer + HEADER-LENGTH;

/* crea socket */
...
/* lavora sull'header */
memcpy(header, X, X);
/* lavora sulla stringa */
memcpy(string, X, X);
/* invia */
write(fd, buffer, sizeof(buffer));