Intendi questo?
In quel caso il server non si blocca sulla read(), semplicemente all'inizio legge 15 byte e ti stampa richiesta, poi dalla seconda iterazione in poi, poiché legge sempre 0 (come ti dicevo...) non esegue né il corpo del primo if né quello del secondo. L'impressione è quella di un blocco sulla read() ma in realtà non sta facendo altro che ciclare all'infinito, ripetendo delle read() a raffica che restituiscono sempre 0 perché nient'altro possono restituire :°Dcodice:while (1) { if (read (fdf, richiesta, 15) > 0) { printf ("%s\n", richiesta); } else if (read (fdf, richiesta, 15) == -1) { printf ("\n Errore \n"); } }
Tant'è che se modifichi così...
avrai un infinità di lol stampati a video. Che poi non serve ripetere 3 volte la read(), basta una sola chiamata memorizzando il valore di ritorno in una variabile...codice:while (1) { if (read (fdf, richiesta, 15) > 0) { printf ("%s\n", richiesta); } else if (read (fdf, richiesta, 15) == -1) { printf ("\n Errore \n"); } else if (read (fdf, richiesta, 15) == 0){ printf("lol\n"); } }

Rispondi quotando
