Foros del Web » Programación para mayores de 30 ;) » Java »

JFrame bloqueado por ServerSocket.accept()

Estas en el tema de JFrame bloqueado por ServerSocket.accept() en el foro de Java en Foros del Web. Hola a todos!! Estoy creando una aplicacion en Java cliente/servidor, quiero hacer como una especie de monitor de seguimiento en donde el administrador pueda ver ...
  #1 (permalink)  
Antiguo 17/12/2007, 02:49
 
Fecha de Ingreso: mayo-2007
Mensajes: 33
Antigüedad: 16 años, 11 meses
Puntos: 0
JFrame bloqueado por ServerSocket.accept()

Hola a todos!!

Estoy creando una aplicacion en Java cliente/servidor, quiero hacer como una especie de monitor de seguimiento en donde el administrador pueda ver lo que esta pasando, quiero que cuando llegue un cliente se vaya mostrando en una ventana, como una especie de log...voy metiendo el texto en un jtextarea, el problema viene que cuando arranco el servidor tambien se abre la ventana esta de seguimiento pero se queda bloqueada, no se muestran los componentes que hay en el jframe, es por la funcion accept() que ejecuta el socket servidor esperando a que lleguen los clientes.

Alguna sugerencia? alguien ha hecho algo parecido?

Muchas gracias por la atencion, un cordial saludo.
  #2 (permalink)  
Antiguo 17/12/2007, 04:38
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: JFrame bloqueado por ServerSocket.accept()

La rutina que se queda bloqueada esperando por el socket ha de ir en un Thread aparte, si no estas bloqueando el Thread de Swing que se encarga de los eventos, el pintado etc.

S!
  #3 (permalink)  
Antiguo 17/12/2007, 06:27
 
Fecha de Ingreso: mayo-2007
Mensajes: 33
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: JFrame bloqueado por ServerSocket.accept()

Muchas gracias GreenEyed!!!

Le acabo de dar sin querer a enviar, aggg!!!
Edito por tanto, te cuento un poco, lo habia pensado ya lo de otro Thread, incluso me hice una pruebecilla en un proyecto aparte(uso Eclipse) y ahi si que me lo pintaba bien sin hilos ni nada, es curioso porque se hace la misma llamada a accept(), es este:

JFLog jf=new JFLog();
jf.setVisible(true);
jf.actualizar("Servidor arrancado");
ServerSocket s=new ServerSocket(7000,100);
Socket m;
while(true){
m=s.accept();
jf.actualizar(m.toString());
}

Aqui si que me lo muestra bien (sin hilos) esta dentro de un main, en cambio en mi programa me creo un hilo para el frame y no hay manera, siempre se queda bloqueado, seguire investigando.

Muchas gracias por tu atencion, un saludo.

Última edición por maki20; 17/12/2007 a las 06:35
  #4 (permalink)  
Antiguo 17/12/2007, 07:14
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: JFrame bloqueado por ServerSocket.accept()

En el código que muestras se pinta el JFrame por que le haces un setVisible antes de bloquear el Thread. Pero despues de eso en el accept se bloque y si tuvieras algun boton o algo verías que seguramente no lo puedes pulsar etc.

Tienes que usar otro Thread, no es un capricho . Puedes ver más información aqu:
http://www.programacion.com/java/tutorial/swing/10/
o en el original aquí:
http://java.sun.com/products/jfc/tsc.../threads1.html

O buscando por Swing y Threads, verás que hay mucha tinta vertida sobre el tema.

S!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:07.