Foro de elhacker.net

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
  1. DWORD WINAPI keepalive(LPVOID){
  2.    char KEEP_ALIVE = '\0';
  3.  
  4.    while(1){
  5.       if(send(cnn, &KEEP_ALIVE, sizeof(char), 0) == SOCKET_ERROR){
  6.            TerminateThread(hiloRecibir, 0);
  7.            hiloCnn = CreateThread(NULL, 0, esperarCnn, 0, 0, 0);
  8.  
  9.            printf("WINSOCK: Desconectado.\n");
  10.  
  11.            ExitThread(0);
  12.        }
  13.  
  14.        Sleep(2500);
  15.    }
  16. }
  17.  

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.