Buongiorno a tutti.
Il mio problema è il seguente:
Sto realizzando un programma che comunica con un server che rimane in attesa di un comando e mi restituisce una immagine sotto forma di una serie di dati,
Per ricevere i dati dal server ho creato un Socket e utilizzo il metodo Socket.getInputStream();
Tutto funziona fino a che lo stream di dati è relativamente piccolo (< 8.000 Byte circa)codice:Socket sok = new Socket("10.10.0.82", 2006); InputStream is = sok.getInputStream();
In caso di un flusso di dati di dimensioni maggiori, il .getInputStream() mi restituisce un numero di byte attorno agli 8.000.
Ho provato a sostituire i'InputStream con il DataInputStream ed ottengo un buffer attorno ai 50.000 byte, più grande ma non ancora sufficiente.
Ho provato a realizzare un loop che ripeta l'istruzione di .getInputStream(); sino a quando is.available() è maggiore di zero, ovvero sino a quando c'è qualcosa da leggere, però finisce che ho ricevuto meno dati di quelli che il server mi ha mandato.
A priori so quanti byte mi deve rispondere il server quindi so quando non li ricevo tutti.
Domanda:
Che procedura posso utilizzare per leggere uno stream di circa 400.000 byte?
Mi basta anche solo un suggerimento per capire che strada prendere.
Spero d'essermi spiegato bene.
Se così non fosse vi prego di domandarmi quello che ho omesso.
Ogni aiuto sarà apprezzato.
Grazie in anticipo.

Rispondi quotando