Salve a tutti... sto facendo qualche esercizio sui socket in linux e mi sono imbattuto in questo problemino che non riesco a capire... quindi chiedo se vi è mai capitato e come avere risolto.

Il problema è questo :
Sia sul programma server( è iterativo) che sul client la connessione viene creata normalmente e senza problemi.
Il problema riguarda il trasferimento dei dati. Il programma server esegue il comando ls redirigendo l'output del comando su un file. Dopodiché legge dal file e scrive sul socket col seguente codice
codice:
while (read(file_descriptor,buf,1)>0) {
     write(sock,buf,1);
}
close(sock)
Questo codice funziona perfettamente, infatti i dati vengono correttamente inviati al client per poi passare ad accettare la connessione successiva.

Il client invece usa il seguente codice per leggere dal socket e stampare sullo standard output
codice:
while (read(sock,buf,1)>0) {
     write(STDOUT_FILENO,buf,1);
}
close(sock)
Il client dopo aver ricevuto tutti i dati provenienti dal socket (li stampa correttamente a video) si blocca sulla read, cercando di leggere ancora dal socket. Ovviamente siccome il socket è vuoto non legge niente e si blocca il programma.
Avete qualche soluzione al problema?

grazie in anticipo... ciao ciao