Detectar se o cliente desconectou ou mesmo caiu usando socket

Olá pessoal, já pesquisei em todo canto, mas não consigo encontrar uma forma de identifcar se um cliente se desconectou do servidor =
gostaria de saber como fazer isso =\ alguém saberia como ?

os métodos isClosed ou isConnected funcionam somente com relação ao “socket local” e não com relação ao remoto sendo assim não sei como identifcar se a outra ponta caiu …parece que existe uma propriedade chamada SO_KEEP_ALIVE, mas a respota é muita tardia se entendi bem depois de 2 horas !!!

então, alguém saberia uma forma ?