Ciao a tutti!!!
per fare trasferimento file da client a server ho scritto questo codice:

UPLOADER
codice:
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);
}
DOWNLOADER
codice:
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;
		}
	}
}
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 canzone

Non riesco proprio a capire dove sia il problema...