Ti ringrazio per l'aiuto intanto.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ì ...).
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?
non ho capito come fare il client :Scodice:byte buffer[] = new byte[1024]; dos.writeBytes(String.valueOf(fin.available())+"\n"); dis.readFully(buffer); dos.write(buffer);

Rispondi quotando