Buongiorno a tutti
Avrei una domanda:
E' possibile determinare lato server se un client si è disconnesso ???
Ho gestito le connessioni socket lato server in multithread in questo modo:
IL thread che poi gestisce la connessione (LogicServer) e che esegue una logica, presenta come si evince dal codice un while(true) questo perché non deve chiudere la connessione socket ad ogni richiesta ma restare sempre attivo perché è mia esigenza che mandi messaggi in continuazione verso il client.codice:try { ServerSocket server = new ServerSocket(33333); // ciclo infinito, in attesa di connessioni while(true){ // chiamata bloccante, in attesa di una nuova connessione Socket client = server.accept(); // la nuova richiesta viene gestita da un thread indipendente, si ripete il ciclo LogicServer newClientConnection = new LogicServer (client); } }catch(Exception e){ e.printStackTrace(); } //Nella classe LogicServer invece public class LogicServer extends Thread { // dichiarazione delle variabili socket e dei buffer Socket client; BufferedReader in; PrintWriter out; public LogicServer (Socket client) { this.client = client; // invoca automaticamente il metodo run() this.start(); } public void run() { try { // inizializza i buffer in entrata e uscita ........ while(true) ........
Il Problema è: inutile tenere thread aperti se poi i client sono disconnessi. Ovviamente essendo presente il while(true) i mio thread risulta sempre attivo. Il mio obbiettivo è far morire il thread uscendo dal ciclo while, non appena viene rilevata una disconnessione lato client.
E' possibile fare una cosa del genere ???
Grazie a tutti

Rispondi quotando

che utilizzo poi per stoppare il servizio.
