Hai usato un "canale" per i comandi e un "canale" per i dati, usando due socket.

Ovviamente funziona, ma questo fatto non e' necessario. Puoi usare un solo socket (ovviamente) per far passare sia i comandi (apri, fine) che i dati binari dell'immagine.

Se avessi seguito il mio suggerimento, ci saresti riuscito ... ti avevo scritto


"Il client aveva comunicato all'inizio della trasmissione, la lunghezza in byte del file da trasmettere e il server confronta tale informazione con la lunghezza corrente del file; appena raggiunta, chiude il file ma non la connessione ..."
e questo con l'unico socket aperto ...

In pratica, se non mi fossi spiegato bene, prima di inviare il file, avresti dovuto inviare qualcosa come

APRI0000074554

in cui indichi di aprire il file e che questo avra' una lunghezza di 74554 byte.

In seguito, tutti i dati che arrivano, li inserisci nel file, tenendo presente quanti ne ricevi e chiudi appena sono arrivati tutti i 74554 byte ...