Per scoprire quando una connessione al server cade puoi settare lo socket in modo che invii da solo un pacchetto vuoto in attesa di un ack di riscontro. Quello che in gergo si chiama ping e il client riceve il pong e che può essere realizzato anche inviando dati non significativi dopo un qualche minuti che il canale non è utilizzato.
Se non invii ne ricevi dati non puoi sapere se la connessione è ancora attiva.