elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Método finalize() o parecido
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Método finalize() o parecido  (Leído 7,063 veces)
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Método finalize() o parecido
« en: 19 Septiembre 2009, 11:07 am »

Hola amigos, se me presenta un nuevo problema, estoy desarrollando una sala de chat y de momento todo ha salido bien pero para dinamizar la lista de usuarios conectados que hay, cuando un cliente cierra el usuario de eset cliente sigue en la lista entonces lo que quiero hacer que al finalizar el programa este envie por socket algun dato y el servidor lo quite de la lista.
Leí por ahi que se puede hacer con finalize() pero al declararlo y meterle alguna función para probar, al finalizar mi programa no ocurre la funcion que esta dentro de finalize (en mi caso para probar un System.out.println("Programa finalizado");)
En consola no imprime tal mensaje al finalizar mi programa.

Saludos


En línea

-Ramc-


Desconectado Desconectado

Mensajes: 495



Ver Perfil
Re: Método finalize() o parecido
« Respuesta #1 en: 19 Septiembre 2009, 17:53 pm »

Si tu programa es gráfico, podrías hacer lo que vas a hacer cuando se cierre la ventana y antes de cancelar su ejecución.

El método finalize() se llama cuando se va a eliminar un objeto, no se como usas tú finalize, pero, para que sea llamado debes primero eliminar cualquier referencia de tu objeto, así será marcado como eliminable, después cuando pase el recolector de basura se lo llevará y si quieres que sea al momento debes llamar explicitamente al recolector de basura, pero, eso no es muy eficiente, normalmente no tendrías que llamar a finalize, hay otras formas, si un usuario se desconecta, el servidor también se da cuenta de que ya no tiene ese hilo con una conexión y al eliminar el hilo también podrías, hay varias maneras.

Saludos.


En línea


Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Método finalize() o parecido
« Respuesta #2 en: 19 Septiembre 2009, 18:15 pm »

Si tu programa es gráfico, podrías hacer lo que vas a hacer cuando se cierre la ventana y antes de cancelar su ejecución.

El método finalize() se llama cuando se va a eliminar un objeto, no se como usas tú finalize, pero, para que sea llamado debes primero eliminar cualquier referencia de tu objeto, así será marcado como eliminable, después cuando pase el recolector de basura se lo llevará y si quieres que sea al momento debes llamar explicitamente al recolector de basura, pero, eso no es muy eficiente, normalmente no tendrías que llamar a finalize, hay otras formas, si un usuario se desconecta, el servidor también se da cuenta de que ya no tiene ese hilo con una conexión y al eliminar el hilo también podrías, hay varias maneras.

Saludos.
ya se que hay varias maneras pero .... alguna en concreto xD?

Saludos
En línea

-Ramc-


Desconectado Desconectado

Mensajes: 495



Ver Perfil
Re: Método finalize() o parecido
« Respuesta #3 en: 19 Septiembre 2009, 18:33 pm »

Como te dije, cuando ya no tengas respuesta del cliente es cuando cierras el socket y eliminas el hilo, ese es un buen momento para actualizar la lista.

Saludos.
En línea


Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Método finalize() o parecido
« Respuesta #4 en: 19 Septiembre 2009, 21:47 pm »

Como te dije, cuando ya no tengas respuesta del cliente es cuando cierras el socket y eliminas el hilo, ese es un buen momento para actualizar la lista.

Saludos.
Haber si he comrpendido, puedo abrir un thread que este enviando todo el tiempo datos y al que no responda de los que el servidor tiene en su lista lo elimina?
Seria ese el algoritmo básico?

Saludos
En línea

-Ramc-


Desconectado Desconectado

Mensajes: 495



Ver Perfil
Re: Método finalize() o parecido
« Respuesta #5 en: 19 Septiembre 2009, 22:40 pm »

O sea, eso es lo que haces ¿no?

Porque sino ¿cómo manejas varios usuarios conectados?
En línea


Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Método finalize() o parecido
« Respuesta #6 en: 19 Septiembre 2009, 23:10 pm »

O sea, eso es lo que haces ¿no?

Porque sino ¿cómo manejas varios usuarios conectados?
Mi problema ha sido de interpretación xD tuve de dado por hecho que el manejo , era imprescindible que los clientes fuesen avisando de lo que ivan a hacer, ahora ya lo veo claro.

Saludos
En línea

quatreduros

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Método finalize() o parecido
« Respuesta #7 en: 13 Octubre 2009, 23:01 pm »

Me gustaría saber como has completado tu codigo fuente.
La base que sería declarar un nuevo hilo "threat" aparte de los que tengan cada cliente??¿?
¿Y ese threat como almacenara los nombres de todos lo clientes?
En línea

Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Método finalize() o parecido
« Respuesta #8 en: 14 Octubre 2009, 21:12 pm »

Me gustaría saber como has completado tu codigo fuente.
La base que sería declarar un nuevo hilo "threat" aparte de los que tengan cada cliente??¿?
¿Y ese threat como almacenara los nombres de todos lo clientes?

Mediante un array activo y dinamico que recibe datos y ofrece lectura de estos continuamente, en caso de que se desconecte, se borra el cliente guardado.
En contre lo que buscaba con un evento de window closing (leer el api lo saca todo xD)

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines