Dipende da come il server interpreta quei 4 bytes.
L'idea di base è più o meno questa:
codice:
const char* str = "ciao mondo";
int len_str = strlen(str);
int len_buffer = len_str + sizeof(int);

char* buffer = (char*) malloc( len_buffer * sizeof(char) );
char* pint = (char*) &variabile;

for (int i=0; i < 4; i++) {
    buffer[i] = pint[i];
} 

for (int i=4; i < len_str; i++) {
    buffer[i] = str[i-4];
} 
send(socket, buffer, len_buffer);

free(buffer);
Crei un buffer grande quanto la stringa da inviare + i 4 bytes dell'header, copi i primi 4 bytes dell'intero trasformato in char*, copi il resto della stringa e invii tutto.
Però funziona solo se il server adotta il procedimento inverso.