Ciao a tutti!!!
per fare trasferimento file da client a server ho scritto questo codice:
UPLOADER
DOWNLOADERcodice:ObjectOutputStream out = new ObjectOutputStream( sock.getOutputStream() ); System.out.println("Inizio esecuzione upload"); FileInputStream fis = new FileInputStream(fileToUpload); byte[] dati = new byte[10000]; int quanti = fis.read(dati); while( quanti > 0 ) { out.writeObject( new Messaggio( dati, quanti, Messaggio.FILE_DATA) ); quanti = fis.read(dati); }
Praticamente ottengo che il file viene trasferito per intero ma viene salvato dall'altra parte solo il primo blocco..ripetuto per l'intera lunghezza del messaggio. Nel caso di un mp3 si sentono i primi 10k di canzone ripetuti per l'intera durata della canzonecodice:File file = new File( fileToDownload ); FileOutputStream fos = new FileOutputStream( file ); ObjectInputStream in = new ObjectInputStream( sock.getInputStream() ); boolean stoScaricando = true; byte[] tmp; while( stoScaricando ) { Messaggio letto = (Messaggio)in.readObject(); switch( letto.getFlag() ) { case Messaggio.FILE_DATA: { tmp = new byte[ letto.getQuanti() ]; for (int j=0; j<tmp.length; j++) tmp[j] = letto.getData()[j]; fos.write( tmp ); fos.flush(); break; } case Messaggio.FINE_FILE_TRANSFER: { stoScaricando = false; System.out.println("Fine trasferimento file."); fos.close(); break; } } }
Non riesco proprio a capire dove sia il problema...