Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema sockets

Estas en el tema de Problema sockets en el foro de C/C++ en Foros del Web. Hola, Tengo un problemilla con sockets en Linux, a ver si alguien me puede echar una manilla. Tengo dos programas, un cliente y un servidor, ...
  #1 (permalink)  
Antiguo 26/08/2009, 09:55
 
Fecha de Ingreso: enero-2008
Mensajes: 122
Antigüedad: 16 años, 3 meses
Puntos: 0
Problema sockets

Hola,
Tengo un problemilla con sockets en Linux, a ver si alguien me puede echar una manilla.
Tengo dos programas, un cliente y un servidor, que se conectan mediante conexión tcp. El cliente se conecta al servidor, le envia un mensaje y ahi finaliza el programa.El servidor cuando recibe un mensaje crea una respuesta que ha de enviar al cliente, el problema es que como el cliente no ha esperado a recibir la respuesta este ha cerrado la conexión provocando que el servidor muera al ejecutar el write. He probeado a controlarlo utilizando try{ write(sd, &msj, 1)}catch(int){printf("ERROR")} pero aun asi sigo teniendo el mismo problema.
¿Hay alguna forma de solucionarlo? ¿Cómo puedo controlar el servidor que la conexión está abierta antes de realizar el write?¿..?

Saludos y muchas gracias.

[Edito para meter más datos]
He probado a ejecutar setsockopt(sd, SOL_SOCKET, SO_KEEPALIVE, &optval, sizeof(optval)) antes de hacer el bind en el servidor y sigo teniando el mismo problema.

Última edición por anterma; 26/08/2009 a las 10:09
  #2 (permalink)  
Antiguo 27/08/2009, 00:57
 
Fecha de Ingreso: enero-2008
Mensajes: 122
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Problema sockets

¿Hay alguna función que piueda hacer antes del write me permita testear el estado de la conexión?
  #3 (permalink)  
Antiguo 27/08/2009, 02:28
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Problema sockets

¿Y si usas send en lugar de write? No deberia dar una excepcion sino simplemente retornar un valor de error en ese caso ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #4 (permalink)  
Antiguo 27/08/2009, 04:26
 
Fecha de Ingreso: enero-2008
Mensajes: 122
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Problema sockets

Al final he optado por capturar la señal SIGPIPE!!! y funcionaaaaaaaa!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:45.