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
Questo codice funziona perfettamente, infatti i dati vengono correttamente inviati al client per poi passare ad accettare la connessione successiva.codice:while (read(file_descriptor,buf,1)>0) { write(sock,buf,1); } close(sock)
Il client invece usa il seguente codice per leggere dal socket e stampare sullo standard output
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.codice:while (read(sock,buf,1)>0) { write(STDOUT_FILENO,buf,1); } close(sock)
Avete qualche soluzione al problema?
grazie in anticipo... ciao ciao

Rispondi quotando
) ;
)
