Salve ragazzi.
Ho un problema. Sto eseguendo su un server due thread nei quali ricevo dal client una stringa di comando e successivamente in base al comando dato eseguo un azione.
In particolare ricevo dal client due file xml.
In un caso non ho nessun problema. Il file viene correttamente ricevuto.
Nell'altro caso invece ho un eccezione molto strana dato che è esattamente tutto uguale al primo caso:
il codice è il seguente:
1
2if("TI INVIO LE AZIONI ESEGUITE".equals(str)){
3System.out.println("S: CLIENT DICE: '" + str + "'");
4//RICEZIONE NELLA CARTELLA DI LAVORO DEL FILE AZIONITOSERVER.xml DAL
5//DISPOSITIVO MOBILE
6byte [] mybytearray2 = new byte [filesize];
7InputStream is2 = client.getInputStream();
8FileOutputStream fos2 = new FileOutputStream("AZIONITOSERVER.xml");
9BufferedOutputStream bos2 = new BufferedOutputStream(fos2);
10bytesRead2 = is2.read(mybytearray2,0,mybytearray2.length);
11current2 = bytesRead2;
12
13do {
14bytesRead2 = is2.read(mybytearray2, current2, (mybytearray2.length-current2));
15if(bytesRead2 >= 0) current2 += bytesRead2;
16} while(bytesRead2 > -1);
17
18bos2.write(mybytearray2, 0 , current2);
19bos2.flush();
20long end = System.currentTimeMillis();
21System.out.println("S: SERVER DICE: LOGAZIONITOSERVER.XML RICEVUTO");
22System.out.println("TEMPO IMPIEGATO RICEZIONE DA PARTE DEL SERVER DEL FILE LOGAZIONITOSERVER.XML: "+(end-start));
23bos2.close();
24
25
L'eccezione che mi capita è:
java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at java.io.BufferedOutputStream.write(Unknown Source)
at agenda.bean.TCPDesktopServer.run(TCPDesktopServer. java:104)
at java.lang.Thread.run(Unknown Source)
dove la riga TCPDesktopServer.java:104 è la seguente:
bos2.write(mybytearray2, 0 , current2);
....quello che non capisco è come mai quando vado a togliere l'altra parte di codice che è identica a quella in questione a differenza della stringa di comando che viene inviata dal client e letta dal server (ma il resto è tutto uguale, in quanto ricevo un file e lo memorizzo alla stessa maniera) non mi viene generata l'eccezione e funziona in quanto mi ritrovo il file xml correttamente scritto, invece se lascio entrambe le parti mi si genera l'eccezione e uno dei due file xml ricevuti (quello per cui si genera l'eccezione risulta vuoto).
Vi ringrazio ciao