Aunque TCP/IP es un protocolo "orientado a la conexión", normalmente no se envían datos a través de una conexión inactiva. Puede tener un socket abierto durante un año sin un solo bit enviado por la pila IP. Para notar que se pierde una conexión, debe enviar algunos datos en el nivel de la aplicación. (*) Puede probar esto desconectando el cable del teléfono de su módem ADSL. Todas las conexiones en su PC deben permanecer activas, a menos que las aplicaciones tengan algún tipo de mecanismo keepalive de nivel de aplicación.
De modo que la única forma de notar la pérdida de conexión es abrir la conexión TCP a algún servidor y leer algunos datos de la misma. Quizás la forma más simple podría ser conectarse a un servidor FTP y buscar un archivo pequeño, o una lista de directorios, de vez en cuando. Nunca he visto un servidor genérico que realmente haya sido diseñado para este caso, y puede que los propietarios del servidor FTP no quieran que los clientes lo hagan.
(*) También hay un mecanismo llamado de mantenimiento de conexión TCP, pero en muchos sistemas operativos que hay que activarlo para todas las aplicaciones, y no es muy práctico de usar si quieres notar pérdida de conexión rápida
No es correcto. Si ha establecido un tiempo de espera de lectura y activa una excepción, es decir, la operación falla, pero no necesariamente indica una conexión perdida. – EJP
@EJP No siempre es correcto, pero le dará una buena idea sobre lo que está sucediendo. – jjnguy
No, no lo hará. No puede distinguir entre un servidor lento y una conexión perdida con un tiempo de espera de lectura. – EJP