Per la scrittura impacchetto una struttura message_t in un unico buffer, che inizia con un header contenente la lunghezza del messaggio inviato. Il buffer è così costruito:

codice:
int64_t header;
len = strlen(&msg->type) + strlen(msg->buffer) +3;
	da_inviare = (char*) malloc(len * sizeof(char) );
	reall = realloc(da_inviare, sizeof(int64_t) );
	if (reall == NULL){
		errno = ENOMEM;
		free(da_inviare);
		return -1;
	}
	header = (int64_t) len;
	/*Inserisco l'header nel messaggio*/
	sprintf(da_inviare, "%" PRId64, header);
	/*Compongo il messaggio, scrivendo solo i caratteri significativi sul buffer da inviare.*/
	strcat(da_inviare, strcat(&msg->type,":"));
	strncat(da_inviare, strcat(msg->buffer,"\n"), msg->length);
	/*Scrivo il messaggio sulla socket*/
	inviati = write(sc, &da_inviare, len);
	free(da_inviare);
	da_inviare = NULL;
Il messaggio è inviato correttamente ed è nella forma: "15Q:Messaggio\n". La read dovrebbe innanzitutto leggere quel "15", successivamente tutto il resto..