22/04/09 10:26
maniscalco
Salve a tutti ragazzi/e/x sono un newbie del forum e avrei una questione : ho implementato un piccolo programmino multithread Server/client che al momento permette il trasferimento di file anche se non di grandi dimensioni tramite l utilizzo di un array di byte ora il problema sorge poichè avrei bisogno di implementare un resume per questi trasferimenti , che anche se non arrivano a grandi dimensioni cmq fino ad un 20 mb l ho testato e funziona , vi posto il codice dei due lati per il send e il receive e spero che qualche anima pia mi dia una mano grazie in anticipo
Lato Server
Lato Client
Ovviamente non ho postato tutto il codice per problemi di lunghezza pero se qlkuno ha bisogno di ulteriori info posso spedirlo
Lato Server
outs = new DataOutputStream( // out è lo stream che scrive sulla socket Server.connection.getOutputStream()); DataInputStream fileIn = new DataInputStream(new BufferedInputStream( new FileInputStream("C:\Users\Jo\Desktop\"+file))); int len=fileIn.available(); byte[] arr = new byte [len]; fileIn.readFully(arr); outs.write(1); // File trovato: invio 1 al client outs.writeUTF(file); //invia nome file outs.writeLong(len); //invia la lunghezza del file outs.write(arr); // Scrive il file
Lato Client
if(c==1){System.out.println("File Trovato Download in Corso"); String file=indaServer.readUTF(); while(true){ OutputStream fileOut = new BufferedOutputStream( new FileOutputStream("C:\Users\Jo\Desktop\s\"+file)); byte[] lens = new byte [(int) indaServer.readLong()]; indaServer.readFully(lens); fileOut.write(lens); //if(fileOut.equals(lens)){fileOut.close();}else {System.out.println("non va");} fileOut.close(); FileInputStream fileIn= new FileInputStream("C:\Users\Jo\Desktop\"+file); int len=fileIn.available(); System.out.println("e stato richiesto il file "+file+" contenente "+len+"B di dati"); System.out.println(""); break;}
Ovviamente non ho postato tutto il codice per problemi di lunghezza pero se qlkuno ha bisogno di ulteriori info posso spedirlo
aaa