Estoy de acuerdo con Zan Lynx. No hay garantía, pero puede mantener viva una conexión casi indefinidamente enviando datos sobre ella, suponiendo que no haya problemas de conectividad o de ancho de banda.
lo general he ido para el enfoque de mantener activa a nivel de aplicación, aunque esto no tiene por lo general debido a que ha estado en la especificación del cliente así que he tenido que hacerlo. Pero solo envíe algunos datos breves cada minuto o dos, a los que espera algún tipo de reconocimiento.
Ya sea que cuentes una falta de reconocimiento de que la conexión de haber fracasado depende de usted. En general, esto es lo que hice en el pasado, aunque hubo un caso en el que tuve que esperar tres respuestas fallidas seguidas para desconectar la conexión porque la aplicación al otro extremo de la conexión estaba extremadamente inestable al responder "¿estás ahí? ? " peticiones.
Si falla la conexión, que en algún momento es probable que, incluso con las máquinas en la misma red, a continuación, sólo tratar de restablecerla. Si eso falla una cantidad determinada de veces, entonces tienes un problema. Si su conexión falla persistentemente después de haber sido conectada por un tiempo, entonces nuevamente, usted tiene un problema. Lo más probable es que en ambos casos sea probablemente un problema de red, en lugar de su código, o tal vez un problema con la pila TCP/IP en su máquina (se ha sabido: encontré problemas con esto en una versión anterior de QNX; simplemente caer al azar). Una vez dicho esto, es posible que tenga un problema de software, y la única manera de saberlo con seguridad es adjuntar un depurador o iniciar sesión allí. P.ej. si siempre puedes conectarte con éxito, pero después de un tiempo dejas de recibir ACK, incluso después de volver a conectarte, entonces tal vez tu servidor esté bloqueado o se quede atascado en un bucle o algo así.
Lo que es realmente útil es configurar una serie de pruebas de larga duración bajo una variedad de condiciones de carga, desde simplemente enviar el mantenimiento vivo ¿está usted allí?/Ack solicitudes y respuestas, para golpear absolutamente el servidor.En general, esto le dará más confianza sobre los componentes de su software, y puede ser realmente útil para eliminar algunos problemas realmente extraños que no necesariamente causarán un problema con su conexión, aunque pueden ocasionar problemas con las transacciones que se llevan a cabo. Por ejemplo, una vez escribí un servidor de aplicaciones de telecomunicaciones que proporcionaba servicios, como la traducción de números, y simplemente lo dejábamos en funcionamiento durante días. El caso es que cuando llegara el sábado, durante todo el día, rechazaría todas las solicitudes de llamadas que llegaran, lo que representaba millones de llamadas, y no teníamos idea de por qué. Resultó ser debido a un único error tipográfico en algún código de conversión de fecha que solo causaba un problema los sábados.
Espero que ayude.
para siempre si tiene el intervalo KeepAlive correcto, relacionado: http://stackoverflow.com/questions/3907537/keep-alive-tcp-ip-connected-sockets-over-the-internet-when-how-and- how-mucho/5149662 # 5149662 – markmnl
Lo que las personas respondieron en 1999: https://ask.slashdot.org/story/99/09/19/2150236/longest-open-tcp-connection – user3041714