Ciao a tutti, ho un problema con la ricezione di dati da un socket Java.
In pratica vorrei fare in modo di ricevere dati dal socket (sotto forma di singoli caratteri) fino a quando lo stream "è pieno" e non necessariamente fino a quando ricevo un carattere particolare (esempio 'n' oppure ' ')
Sto usando questo codice:
String recvMessage()
{
String s="";
int chr;
try
{
while ( (chr = in.read()) != -1){ //in è un oggetto di tipo InputStream collegato al socket
s+=(char)chr;
}//end while
}
catch(IOException exc){System.out.println("Interruzione ricezione from stream!");}
System.out.println("Ricevuto: "+ s);
return s;
}
In pratica non esce mai dal while nonostante nello stream non ci siano più caratteri da leggere e non viene nemmeno sollevata l'eccezione IOException.
Quindi questo metodo non ritorna mai la "stringa" ricevuta.
Ora, mi chiedo anche se quello che voglio fare sia materialmente possibile ottenerlo: Come fa un metodo (in qst caso read()) a capire che nello stream non ci sono più caratteri? Non potrebbe essere che ci siano ancora caratteri ma magari arrivano un po' in ritardo?