elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con sockets
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con sockets  (Leído 1,835 veces)
<<<-Basura->>>


Desconectado Desconectado

Mensajes: 388



Ver Perfil
Problema con sockets
« en: 11 Abril 2013, 21:54 pm »

Buenas estoy trabajando con sockets y he dado con un problema...

Mi servidor acepta n cantidad de clientes y los agrega a una lista, y controla todos los clientes con hilos respectivamente.

El problema esta cuando un cliente se desconecta sin avisar... esto provoca que se caiga el servidor: "(program exited with code: 141)"...

Lo que quiero saber es como puedo saber si un cliente se desconecta de forma inesperada??
Como puedo controlarlo?


En línea

<<<--Basura-->>>
Luz Violeta

Desconectado Desconectado

Mensajes: 26





Ver Perfil WWW
Re: Problema con sockets
« Respuesta #1 en: 12 Abril 2013, 21:30 pm »

http://www.etnassoft.com/biblioteca/guia-beej-de-programacion-en-redes/

En una lectura básica de sockets está lo que buscás, toca repasar (pista → una práctica que tiene que ser ritual es revisar siempre los valores de retorno de una función, por que funcione en nuestro entorno no significa que donde la ejecutemos vaya a funcionar )

Saludos.


En línea

It's sort of like my past is an unfinished painting. And as the artist of that painting, I must fill in all the ugly holes and make it beautiful again.
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Problema con sockets
« Respuesta #2 en: 12 Abril 2013, 21:54 pm »

Eso me paso a mi, y creo recordar que era porque tu programa habia recibido la señal SIGPIPE, que significa que un socket se ha desconectado, y al escribir o recibir desde uno de estos sockets, y si no tienes un handler, crashea el programa.

Prueba esto:

Código
  1. strace ./tu_programa

Y pon el output, o si es muy largo la parte en la que crashea.

Saludos.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
<<<-Basura->>>


Desconectado Desconectado

Mensajes: 388



Ver Perfil
Re: Problema con sockets
« Respuesta #3 en: 22 Abril 2013, 02:36 am »

0xDani, hice que mi programa capturara la señal SIGPIPE, y la captura pero no se como hacer para saber cual fue exactamente el socket que tubo el problema, me entiendes??

Si captura la señal, pero no se cual fue el socket que la producío
En línea

<<<--Basura-->>>
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Problema con sockets
« Respuesta #4 en: 22 Abril 2013, 15:20 pm »

Te digo lo que hice en mi flooder:

Antes de intentar escribir o leer del socket, usaba la funcion getpeername(), y si retornaba un valor indicando que había fallado, cerraba y volvía a conectar el socket.

De todas formas ahí esta el código, mírate la función t (la que le paso al thread), justo antes de que haga la petición.

Saludos.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con Sockets
Programación Visual Basic
APOKLIPTICO 9 3,183 Último mensaje 6 Octubre 2007, 23:12 pm
por APOKLIPTICO
Problema con sockets
Bases de Datos
XafiloX 1 2,559 Último mensaje 9 Febrero 2010, 00:39 am
por ^Tifa^
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines