ich hatte auch mal so ein ähnliches problem und ich habe folgendermassen gelöst:
1 Timer der alle 30 sekunden eine Nachricht sendet (zb. '**statuscheck**'), wenn er innerhalb von 5 sec keine Antwort(zb. '**statusonline**') bekommt, so ist der clientsocket geschlossen bzw die internetverbindung besteht nicht mehr.
Hoffe ich konnt helfen