Hola estoy q hago un trabajo de la univ. y tengo una duda, haber si me dan una idea para solucionar donde me quede trabado.
Para no complicar con explicaciones, expondre algo MAS simple pero con el el mismo problema.
Tengo un servidor que al ejecutarse lanza un hilo, este hilo se encargará de recibir las conexiones de los clientes y hará lo que tenga que hacer.
El hilo puede atender a varios clientes.
Cuando pulse la tecla 'Q' el servidor debe cerrarse, y no se atenderan mas llamadas.
-->> Aqui es donde me trabo.
El hilo que atiende las llamadas tiene algo como esto:
// metodos del hilo
void iniciar() {
...
while(!noFin) {
..
..recv(fd, bufer, maximo, 0);
..
}
..
}
void fin() {
noFin=true;
}
////
Lo que hice, fue que al recibir por consola la 'Q' el servidor llama al fin() del hilo, pero el problema aqui es que si bien la variable 'noFin' cambia de estado, como recv() es bloqueante, entonces se necesita que el hilo al menos reciba una ultima conexion mas para luego dejar de recibir conexiones.
Ese es mi problema,
hay alguna manera de interrumpir la funcion recv()...
Por cierto me pidieron que use socket bloqueantes.
Creo que mi problema es como resuelvo el trbajo, quizas debo verlo de otra manera.. nose.
Alguien que tenga una idea.
Gracias..
Para no complicar con explicaciones, expondre algo MAS simple pero con el el mismo problema.
Tengo un servidor que al ejecutarse lanza un hilo, este hilo se encargará de recibir las conexiones de los clientes y hará lo que tenga que hacer.
El hilo puede atender a varios clientes.
Cuando pulse la tecla 'Q' el servidor debe cerrarse, y no se atenderan mas llamadas.
-->> Aqui es donde me trabo.
El hilo que atiende las llamadas tiene algo como esto:
// metodos del hilo
void iniciar() {
...
while(!noFin) {
..
..recv(fd, bufer, maximo, 0);
..
}
..
}
void fin() {
noFin=true;
}
////
Lo que hice, fue que al recibir por consola la 'Q' el servidor llama al fin() del hilo, pero el problema aqui es que si bien la variable 'noFin' cambia de estado, como recv() es bloqueante, entonces se necesita que el hilo al menos reciba una ultima conexion mas para luego dejar de recibir conexiones.
Ese es mi problema,
hay alguna manera de interrumpir la funcion recv()...
Por cierto me pidieron que use socket bloqueantes.
Creo que mi problema es como resuelvo el trbajo, quizas debo verlo de otra manera.. nose.
Alguien que tenga una idea.
Gracias..