Originariamente inviato da andbin
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.

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ì ...).
Ti ringrazio per l'aiuto intanto.
Si, non voglio chiudere la connessione perchè voglio esguire un paio di cose nella stessa connessione.

I file non arrivano ai 500kb quindi creo un vettore di 1024 elementi?
Il server sarà così allora?

codice:
byte buffer[] = new byte[1024];
dos.writeBytes(String.valueOf(fin.available())+"\n");
dis.readFully(buffer);
dos.write(buffer);
non ho capito come fare il client :S