En realidad lo importante es que estés cerrando el socket que pusiste a
escuchar conexiones. No solo los que se crean en el accept()

On 10/20/07, Mauro Ciancio <[EMAIL PROTECTED]> wrote:
>
> Hola a todos:
>
> Estoy teniendo un problema con los sockets de c bajo linux.
> Estoy haciendo un servidor tcp y cuando bindeo y escucho un puerto por
> primera vez todo anda bien. Pero cuando cierro el programa y lo
> vuelvo a abrir no puedo hacer el listen sobre el puerto.
>
> Estoy cerrando el socket y todo, pero el error sigue apareciendo, alguna
> idea?
>
> les dejo el codigo del server:
>
> void Socket::listen(unsigned port, unsigned cantidadEspera) {
>     if (!valido) {
>         valido = false;
>         struct sockaddr_in miDireccion;
>         fd = 0;
>
>         if((fd = ::socket(AF_INET, SOCK_STREAM, 0)) == INVALIDO)
>             valido = false;
>         else {
>             miDireccion.sin_family = AF_INET;
>             miDireccion.sin_port = htons(port);
>             miDireccion.sin_addr.s_addr = INADDR_ANY;
>             bzero(&(miDireccion.sin_zero ), 8);
>
>             if (bind(fd, (struct sockaddr*) &miDireccion, sizeof(struct
> sockaddr)) == INVALIDO)
>                 valido = false;
>             else
>                 valido = ::listen(fd, cantidadEspera) != INVALIDO;
>         }
>     }
> }
>
> y desde el close hago:
>
> void Socket::close() {
>     ::close(fd);
>     valido=false;
> }
>
> Muchas gracias,
> Mauro.
>
> _______________________________________________
> Lista de correo Programacion.
> [email protected]
> http://listas.fi.uba.ar/mailman/listinfo/programacion
>
>


-- 
_Leo_
(aka Lele)
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a