Buonasera a tutti,
sto creando un'applicazione java dove devo gestire la disconnessione utenti.
Il mio problema è che l'evento di disconnessione "non arriva" perché sono ferma su una read...
Ecco il codice:
codice:
public class ThreadDisconnessioneClient extends Thread {
private GuiPrivatoClient guiClient;
private Socket stato;
BufferedReader in;
PrintWriter out;
String esito;
private ClientMain client;
private boolean disconnetti;
public ThreadDisconnessioneClient(GuiPrivatoClient gui, Socket s, ClientMain cm){
guiClient = gui;
stato = s;
client = cm;
disconnetti = client.terminaChiamata;
}
public void run(){
System.out.println("ho avviato thread disconnessione client");
while(disconnetti == false){
try {
in = new BufferedReader(new InputStreamReader(stato.getInputStream()));
esito = in.readLine(); //ECCO, E' QUI AD ASPETTARE UNA EVENTUALE
DISCONNESSIONE DEL CLIENT E NON SI ACCORGE DELLA PROPRIA
} catch (IOException e) {
e.printStackTrace();
}
System.out.print("DisconnessioneClient: ho letto "+esito);
if (esito.equals("quit"));
guiClient.mostraChiudi();
disconnetti = client.terminaChiamata;
}
try {
System.out.println("DisconnessioneClient stampa quit");
out = new PrintWriter(stato.getOutputStream());
out.write("quit");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Ho letto su altri forum che dovrei usare al posto della read una select() con un timeout ma non ho capito come fare...
Qualcuno sa aiutarmi?? grazie mille!!