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