Domanda: e perché non vuoi che si chiuda? Forse .... perché vuoi gestire più trasferimenti con la stessa connessione? Allora bene, ok. Ma devi stabilire un "protocollo" di comunicazione, anche minimale.Originariamente inviato da AtoXx
mi si chiude la connessione ed io non voglio che si chiuda.
E la cosa più semplice in questi casi è quella di inviare prima dello stream di dati del file una informazione sulla lunghezza di questo stream. Questa comunque è una regola abbastanza generale, quella cioè di anticipare al destinatario quanti byte si deve aspettare.
Visto che usi DataOutputStream, semplicemente scrivi un int che indica la lunghezza del file. E il destinatario (l'altro host nel tuo caso il client) saprà da subito quanti byte aspettarsi e quindi potrà operare di conseguenza.
E nota che a meno tu sappia che i file sono relativamente piccoli, NON dovresti istanziare un array per l'intero file! In questi casi basta leggere/scrivere a blocchi di N byte (in genere un buffer di lunghezza fissa, es. 1024 byte o giù di lì ...).

Rispondi quotando