Hola! me gustaría saber si existen funciones o mecanismos para detectar fácilmente si, en una conexión mediante sockets TCP, se ha perdido la conexión por caida repentina o cierre del otro extremo. Seria una situación del estilo Servidor con varios Clientes, los Clientes se conectan y se registran en una base de datos y quedan conectados. El problema surge si se pierde la conexión de forma fortuita con el cliente (un corte de luz en el cliente, por ejemplo), qué forma sencilla y eficaz podría implementarse para detectar y eliminar al cliente de dicho registro.
Un saludo!
Creo que la misma función recv puedes usar para saber el estado de la conexión.
http://msdn.microsoft.com/en-us/library/ms740121(v=vs.85).aspx
O si no usar SOCK_DGRAM con tus propios mecanismos, deben existir otras, pero no las conozco,
saludos
Se me olvidó especificar que el entorno de programación es Linux. Gracias igualmente por la respuesta!
http://es.tldp.org/Tutoriales/PROG-SOCKETS/prog-sockets.html
Espero te sirva..
Gracias danyhack, pero la programación de sockets la controlo, lo que busco va un poco más allá y se trata de detectar un socket caido sin ser cerrado mediante el clásico "close()".