La mia applicazione di chat si collega a un server e le informazioni vengono inviate/ricevute dall'utente. Quando la connessione cambia, ad esempio 3g-> wifi, wifi-> 3g, perdendo una connessione dati, ecc., Lo socket rimane collegato per periodi di tempo prima della disconnessione. Durante questo periodo, è impossibile stabilire se la connessione è ancora attiva, sembra che i messaggi vengano inviati correttamente. Altre volte, quando si invia un messaggio, si genera un errore IO e si disconnette.La presa non si interrompe quando la connettività cambia
Oltre esecuzione codice per rilevare cambiamenti di connessione e ricollegare appropriato, è possibile avere la presa immediatamente un'eccezione IO quando cambia la connettività?
Edit: sto collegamento utilizzando il codice seguente:
Socket sock = new Socket();
sock.connect(new InetSocketAddress(getAddress(), getPort())), getTimeout());
//get bufferedReader and read until BufferedReader#readLine() returns null
non utilizzo setSoTimeout come dati non possono essere trasferiti per lunghi periodi di tempo a seconda della configurazione del server remoto.
Poi vedere http://stackoverflow.com/questions/969866/java-detect-lost-connection http://stackoverflow.com/domande/155243/why-è-da-impossibile-senza-tentare-io da rilevare-che-tcp-socket-era-grace –