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