Ho scritto due software che si scambiano oggetti tramite socket, tutto funziona tranne l'accorgersi di uno dei software che l'altro si è arrestato.
Infatti se termino un'applicazione con ctrl+c mi aspetto che l'altro si accorga che il socket non è più in essere, invece non è così.
Per controllare che tutto sia ancora funzionante ho scritto questo metodo:
che viene utilizzato da un apposito thread ogni minuto.codice:public boolean isAttivo(){ boolean esito = true; if ( !isAttivo ) esito = false; if ( !socket.isConnected() || socket.isClosed() || !socket.isBound() || socket.isInputShutdown() || socket.isOutputShutdown() ) { if ( debug >1 ) logger.warn("Il server non e' attivo"); esito = false; } else if ( debug >4 ) logger.warn("Il socket e' attivo"); return esito; }
Com'è possibile che l'applicazione non si accorga che il thread non è più funzionante ?

Rispondi quotando

