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