Hola,
Bueno ahorita haré una tesis de esta situación que me tiene bastante intrigado, verán estoy diseñando una aplicación cliente/servidor muy simple estilo chat, pero me sucede que al pasar cierto tiempo sin enviar información entre las 2 partes el servidor me genera este error:
"An existing connection was forcibly closed by the remote host"
Antes de continuar quisiera decir que cuando programaba con VB6 usaba el control WINSOCK y nunca me paso esto en los varios proyectos de troyanos y aplicaciones similares que desarrollé, bueno continuando buscando información por la RED encuentro que esto no es nada nuevo hay muchísimos temas similares sin alguna solución clara, por lo que preguntó:
Cuando el cliente y el servidor se conectan entre si esta conexión tiene un tiempo de vida sentenciado sin transmitir datos entre ellos ??
En algunos lados dicen que si en otros que no, como en el siguiente fragmento sacado de:
https://social.msdn.microsoft.com/Forums/en-US/013fba11-2842-4535-bfa6-2d934a582b15/issues-with-persistent-socket-connections?forum=netfxnetcom
"There is no idle timeout on TCP (especially on Windows). There are error timeouts but no idle timeouts.
I have two programs connected sending no data, and the connection stays open for hours..." y muestra un progreso del tiempo que dicha aplicación lleva conectado...
En otras dicen que implemente un heartbeat para que no se cierre la conexión, esto lo hice y mejoro pero no solucionó el problema y se que es un problema con la conexión de mi aplicación porque cuando jugamos MW3 o BF3 veo que tienen LAG o perdida de paquetes pero no se desconectan, entonces amigos me pueden decir por donde puedo mirar para dar con la solución.
PD: Volveré a mirar pero estoy casi seguro de que el BF3 no usa KEEPALIVE en sus conexiones, si vi que utiliza el protocolo UDP y TCP sino me equivoco, las pruebas con mi aplicación las estoy realizando en maquinas virtuales sin SWITCH's ni ROUTER's y aún asi se caen., probe varias aplicaciones similares a la que diseñe y sucede lo mismo, actualmente estoy desarrollando en VB.NET
Salu2 y gracias de antemano cualquier sugerencia.
NUEVA INFORMACIÓN
El laboratorio que estoy usando consta de 2 Pc Virtuales (1 WindowsXP) (1 Windows 10) y la principal (Windows 10)
En el Windows XP monte el servidor y desde las otras 2 me conecte, las deje por unos minutos y me dispuse a escribir cosas aleatoriamente para ver si los mensajes llegaban, los resultados son que, la comunicación nada mas se interrumpe con el sistema principal las 2 virtuales se siguen comunicando aun pasado 20 min inactivos.
Orita subo las imagenes del WireShark, es normal que las Pc virtuales sigan como si nada y la principal pierda la conexión estoy pensando en formatear.