Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: naderST en 21 Julio 2011, 04:26 AM

Título: Keep Alive Sockets
Publicado por: naderST en 21 Julio 2011, 04:26 AM
Buenas a todos, tengo un problema con sockets en windows. Me pasa lo siguiente tengo una única conexión de sockets y tengo un hilo que comprueba que la conexión este activa enviando un mensaje cada 2.5 segundos, el problema resulta que al usar send() en Windows 7 cuando la conexión no esta activa en vez de devolverme SOCKET_ERROR el programa crashea.

Código (cpp) [Seleccionar]

DWORD WINAPI keepalive(LPVOID){
   char KEEP_ALIVE = '\0';

   while(1){
      if(send(cnn, &KEEP_ALIVE, sizeof(char), 0) == SOCKET_ERROR){
           TerminateThread(hiloRecibir, 0);
           hiloCnn = CreateThread(NULL, 0, esperarCnn, 0, 0, 0);

           printf("WINSOCK: Desconectado.\n");

           ExitThread(0);
       }

       Sleep(2500);
   }
}


EDIT:

En Windows XP funciona perfectamente.
Título: Re: Keep Alive Sockets
Publicado por: edgemx en 21 Julio 2011, 05:06 AM
(^_^) me gustaria ayudar... pero aun soy noob en esto de programacion  :silbar:
Título: Re: Keep Alive Sockets
Publicado por: Arkangel_0x7C5 en 21 Julio 2011, 17:43 PM
No se porque sera, pero si la conexión se cerrara bien, send devolvería 0 en vez de SOCKET_ERROR
Título: Re: Keep Alive Sockets
Publicado por: naderST en 21 Julio 2011, 23:07 PM
Ya solucioné, era un problema que tenía en el hilo donde recibo los datos, los recibía mal y al parecer se cagaba el socket.