Ciao a tutti.
Ho questa parte del mio server che manda i messaggi ai client:
codice:
public void run()
{
try
{
// Ricava lo stream di output associate al socket
// e definisce una classe wrapper di tipo
// BufferedWriter per semplificare le operazioni
// di scrittura
OutputStream s1out = cliente.getOutputStream();
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(s1out));
int num=1;
// Il server invia la risposta al client
inattivo=false;
System.out.print("packet: "+hexString(packet));
while(true){
if(available == false){ // serve per vedere se sono stati scritti i packet che poi mando al client
bw.write(hexString(packet)+"\n");
num++;
available=true;
}
}
//Chiude lo stream di output e la connessione
bw.close();
inattivo=true;
System.out.println("Chiusura connessione effettuata");
}
catch (IOException ex)
{
ex.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
Come vedete i messaggi sono in un ciclo infinito: while(true).
Il mio problema sussiste quando eseguo questo server dentro una applet che contiene altri threads.
Se faccio girare solo il server ed il client, i messaggi vengono mandati e ricevuti in tempo reale.
Se metto il server nella mia applet e ci collego il client, i messaggi arrivano solo dopo che viene eseguito il comando bw.close(), cioè chiudo il buffer di scrittura.
Come mai succede questo?