Sockets y Swing

Saludos a todos, tengo un problema con este programa (estaba modificando un ejemplo de internet a través de Netbeans) y no tengo idea porque no puedo ejecutar el Servidor, se queda colgado y ni siquiera aparece la ventana que puse para simular dicho servidor porque no quiero hacerlo desde cónsola. No entiendo que sucede, estoy comenzando a experimentar con el uso de socket, gracias por su ayuda.

 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de gallark

Ese tema hace largo tiempo

Ese tema hace largo tiempo no lo veo , pero puedes revisar el capitulo de Redes del libro "Como programar en Java " de Deitel(en español 5, 6, 7 edicion), en el que precisamente abordan un ejemplo muy completo de chat Cliente-Servidor, con interfaz gráfica incluida.

Espero te sirva.

vi el chat pero..

Hola, gracias por responder, yo revisé el ejemplo de Deitel y funciona. Lo único distinto con relación a este programa es que la interfaz se construye desde Netbeans y no vía código, por eso no entiendo porque no funciona si en esencia es casi lo mismo. Al ejecutar el Servidor debería aparecer la ventana con el mensaje Esperando Conexión y no lo hace se queda colgado...

Imagen de beto.bateria

Cuando creas una aplicacion

Cuando creas una aplicacion con java, esta es monotarea, es decir puede hacer solo una tarea a la vez, el ejemplo que pusiste se congela debido a que se pone a leer el socket, y solamente va a hacer eso.

Si deseas que la interfase grafica funcione, debes de crear un "subprograma" para que ejecute la lectura del socket, eso se hace a traves de los threads.

Imagen de gallark

Beto tiene razón revisa el

Beto tiene razón revisa el capitulo de trheads y vera un ejemplo de creación de una gui con subprocesamiento múltiple.

Imagen de ezamudio

ese "casi"

en esencia es casi lo mismo

Y ese es el problema.

Tu metodo   termina invocando   y eso bloquea el hilo donde se invoca... y estas invocando   desde el EDT (Event Dispatch Thread) de Swing.

Utiliza SwingWorker. Si estas en Java 6, ya viene incluido; si estas en Java 5 necesitas usar una clase que viene en una biblioteca externa (no recuerdo cual, pero se llama igual SwingWorker). Con eso puede echar a andar el servidor en un hilo separado, como debe ser, para no trabar la GUI.