Ver Mensaje Individual
  #16 (permalink)  
Antiguo 25/08/2008, 13:31
chcma
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Respuesta: Saber si un Socket esta vivo C#

Hola a todos !!!

Perdonar mi demora, pero estuve de vacaciones y bueno... Aqui no tengo el código para mandaros el ejemplo, vais a tener que esperar unos días (10 de Septiembre) a que vuelva a mi lugar de residencia para enviaros el codigo. Si alguien de a quienes se lo he enviado os lo puede mandar os lo agradecería.

Voy a poner aqui el código del servidor y del cliente en cuanto lo tenga para que os sirva. No obstante lo de detectar cuando se ha caido el servidor o el cliente, lo teneis en este link de las faqs: http://www.forosdelweb.com/f29/faq-s...48/index5.html

Las líneas en concreto son:
Código:
        private void DatosLlegados(IAsyncResult iAr)
        {            
            Socket objSocket = (Socket)iAr.AsyncState;
            try
            {
                int tamanioDatosRecibidos = objSocket.EndReceive(iAr);
                if (tamanioDatosRecibidos > 0)
                {
                      //TRATAMOS LOS DATOS RECIBIDOS
                }else{
                      //SE HA CAIDO EL CLIENTE
                }
Cuando un socket se desconecta se envía un valor 0, lo leí en un post de C++ hace tiempo y bueno... con esto me va todo perfectamente, aun que recomiendan por ahí hacer "pings" al servidor, de esta forma como la tengo yo, desconectas el equipo y se detecta que el cliente se ha desconectado... asi que .... creo que uno se puede ahorrar el implementar un keep alive. Que alguien me corriga si discrepa.

Un saludo gente. (Espero haber sido de ayuda, al menos temporalmente)
__________________
Charlie.