Hola a todos, estoy depurando mi aplicacion de red... una tool util que pronto pondre en forma de source y binario en el foro.
Es una aplicacion cliente-servidor que usa sockets, threads y demas...
Bueno uso un sistema de enumeración para ordenarlos en la memoria y poder identificarlos.
La cosa esta en lo siguiente:
Cuando un cliente se conecta al servidor:
Añado 1 al contador (contador++;)
Cuando se desconecta, disminuyo 1 (contador--;)
Pero ocurre el siguiente fallo:
Si abro dos, les doy como id 1 y 2.
Si se va uno, disminuyo y el contador esta en 1 (contador - 1 = 2) y si entra otro se le asigna el 2, ahora tengo dos con el el identificador 2, y uno se remplaza al otro en la tabla de hash.
Me planteé hacerlo que nunca disminuya, pero ocurre el siguiente fallo, cuando quiero hacer un cast a todos, las id que se han desconectado pero sin embargo todavia estan registradas ya no tiene un objeto guardado y produce expeciones cosa mala.
Que puedo hacer?
Saludos
Es una aplicacion cliente-servidor que usa sockets, threads y demas...
Bueno uso un sistema de enumeración para ordenarlos en la memoria y poder identificarlos.
La cosa esta en lo siguiente:
Cuando un cliente se conecta al servidor:
Añado 1 al contador (contador++;)
Cuando se desconecta, disminuyo 1 (contador--;)
Pero ocurre el siguiente fallo:
Si abro dos, les doy como id 1 y 2.
Si se va uno, disminuyo y el contador esta en 1 (contador - 1 = 2) y si entra otro se le asigna el 2, ahora tengo dos con el el identificador 2, y uno se remplaza al otro en la tabla de hash.
Me planteé hacerlo que nunca disminuya, pero ocurre el siguiente fallo, cuando quiero hacer un cast a todos, las id que se han desconectado pero sin embargo todavia estan registradas ya no tiene un objeto guardado y produce expeciones cosa mala.
Que puedo hacer?
Saludos