Saber si Software Cte sigue conectado? en Cliente-Servidor + Winsock

Publicado en 'Programación' por CompuXtreme, 16 Set 2011.





  1. CompuXtreme

    CompuXtreme Miembro maestro

    Registro:
    15 Ago 2011
    Mensajes:
    690
    Likes:
    200




    Necesito algo de ayuda con mi software que estoy realizando para controlar el tiempo en un CyberLAN.

    Veran, en mi 1era version hecha en VB 6.0 como Yo sabia que el Programa Cliente (el que va en cabina) siguia ejecutandose?.

    Cuando usamos el Winsock hay un evento que se llama Close, el cual se invoca cuando el programa cierra la conexion, con ello sabemos que el Cliente ya no se esta ejecutando, sin embargo si el programa cliente se cerro inesperadamente, este evento close nunca sucede, por lo tanto no sabemos si el cliente sigue presente o no.

    Es por ello que se recurren a otros metodos de programacion para solucionar dicho problema, como por ejemplo que el cliente envie un dato simple al servidor cada cierto tiempo, de tal manera que pasado ese tiempo establecido y si el cliente no envia el mensaje, pues se asume que pudo haberse cerrado inesperadamente. Sin embargo este metodo no es eficiente, puesto que si la PC cliente se pone lenta, pues el programa cliente demora en responder y por ende el mensaje no llega en el tiempo establecido.

    El objetivo de implementar esta funcionalidad es que cuando alguien intenta robar alguna pieza de una cabina, y por ende el cliente se decontecta del servidor, entonces en el servidor se puede enviar un msje de alerta para que la persona encargada haga lo que tenga que hacer.

    Otro motivo es que los usuarios no cierren el tiempo sin que el servidor NO lo detecte.

    Asi que en resumen, el cliente envia un msje cada 5 segundos, y el server sabe que el cliente esta ejecutandose, pero si la PC cliente esta lenteja, el mensaje no llega en esos 5 segundos y el server asume que se desconecto y x ende sale el mjse de alerta o simplemente pone en pantalla Cabina desconectada.

    Hay algun metodo mas certero para saber si el software cliente esta conectado al server?
    Uso WINSOCK, protocolo TCP y VB.NET 2010.
     
    Última edición: 16 Set 2011