Hack x Crack - Comunidad de Seguridad informática

Programación => C / C++ => Mensaje iniciado por: caronte en Septiembre 09, 2014, 06:27:19 pm

Título: SOCKET: Connection time out
Publicado por: caronte en Septiembre 09, 2014, 06:27:19 pm
Hola a todos;

Alguien me puede orientar a como evitar el cierre de la aplicacion cuando
Código: [Seleccionar]
connect(); devuelve : "Connection time out"?

Gracias de antemano.
Título: Re:SOCKET: Connection time out
Publicado por: ravenheart en Septiembre 09, 2014, 10:37:01 pm
La aplicación no se cierra sola por un time out. ¿Puedes poner algo de código, a ver si podemos averiguar qué falla?
Título: Re:SOCKET: Connection time out
Publicado por: caronte en Septiembre 10, 2014, 03:09:45 pm
Ravenheart, el codigo es una argamasa de 500 lineas de funciones no muy elegante; pero funcional.

El caso es que al depurar me encontre con que:
Código: [Seleccionar]
Program received signal SIGPIPE, Broken pipe e investigando un poco he visto que esto sucede cuando  intentas enviar o escribir con un socket que esta apagado o no conectado.

Y efectivamente; esta era la funcion original:
Código: C
  1. int juzga_proxis()
  2. {
  3.  
  4.         while (psf!=(posicion_actual+1))
  5.         {
  6.         crea_socket();
  7.         lee_proxy(posicion_actual,1);
  8.         printf("IP: %s\tPUERTO: %d\n", direccion_proxy,puerto_proxy);
  9.         conecta_socket(direccion_proxy,puerto_proxy);
  10.         envia(datos_peticion_proxy);
  11.         recibe();
  12.         }
  13. return 0;
  14. }
y lo he arreglado asi:
Código: C
  1. int juzga_proxis()
  2. {
  3.  
  4.         while (psf!=(posicion_actual+1))
  5.         {
  6.         crea_socket();
  7.         lee_proxy(posicion_actual,1);
  8.         printf("IP: %s\tPUERTO: %d\n", direccion_proxy,puerto_proxy);
  9.         conecta_socket(direccion_proxy,puerto_proxy);
  10.         if (estado_conexion==-1)
  11.         {
  12.         estado_conexion=0;
  13.         juzga_proxis();
  14.         }
  15.         envia(datos_peticion_proxy);
  16.         recibe();
  17.         }
  18. return 0;
  19. }
Título: Re:SOCKET: Connection time out
Publicado por: ravenheart en Septiembre 10, 2014, 11:49:15 pm
y lo he arreglado asi: (...)
¡Estupendo! Genial que hayas conseguido resolver tu problema.

Aunque quizá no venga muy a cuento...
Citar
Ravenheart, el codigo es una argamasa de 500 lineas de funciones no muy elegante; pero funcional.
Cuando te encuentras estos problemas, hacer el código más elegante suele dar buenos resultados.