Este... en el codigo que me has pasado haces esto:
nbytes=recv(socketfd, buf , strlen(buf) , 0 )
Donde "strlen(buf)" es el tamaño que deberia recoger "buf" que es el bufer de entrada. Siendo buf de longitud 0 al no estar inicializado.
Puede que sea eso, que recoja 0 caracteres porque no has inicializado "buf".
Yo creo que con un simple bucle bastaria:
int i;
for(i=0; i<999; i++)
{
buf[i]=' ';
}
buf[999]='\0';
Inserta esto al principio de todo... en principio de esta manera strlen(buf) tendria que devolver 1000... o 1000 por lo que ocupe un caracter (2bytes?).
A ver si rula, saludos!