Devo inviare un file audio dal server al client e per fare questo invio inizialmente la dimensione del file al client in modo tale che con un ciclo while leggo i dati dalla socket e controllo anche che, quelli letti non superano la dimensione del file da ricevere, tutto questo perchè avevo dei problemi nel client che non interrompeva la lettura dalla socket con un semplice controllo sul valore restituito dalla read. Accade però che A VOLTE il client riceva come dimensione del file da leggere un valore negativo del tipo -1445667230 o molto grandi tipo 5856129044331985247 a cosa può essere dovuto? La dimensione inviata è corretta ma viene ricevuto un valore diverso.
Nel Server
Nel Clientcodice:long dim_file = 0; int pos = 0; dim_file = file_da_inviare.getDimensione(); output.writeLong(dim_file); while((pos=fis.read(buffer))!=-1){ outd.write(buffer, 0, pos); } output.flush(); fis.close();
Succede che il programma funzioni regolarmente per due tre invi consecutivi e poi darmi come dimensione del file da ricevere un valore molto grande, oppure puo capitare che al primo tentativo o quello successivo mi viene restituito un valore negativocodice:long dimensione = 0; int pos = 0; int aggiungi = 0; dimensione = input.readLong(); while(aggiungi <= dimensione){ pos = input.read(buffer); aggiungi = aggiungi + pos; fos.write(buffer, 0, pos); if(aggiungi == dim){ aggiungi =0; break; } fos.flush(); fos.close();
Non chiudo la socket perchè dovrei poter fare altre operazioni come ad esempio ricevere altri file.
HELP ME PLEASE.....THANKS

Rispondi quotando