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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problema Hilo Servidor(solucionado).
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema Hilo Servidor(solucionado).  (Leído 2,378 veces)
JavierJV

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Problema Hilo Servidor(solucionado).
« en: 10 Febrero 2014, 14:41 pm »

Buenos días gente.
Les traigo un problemita que estoy teniendo y no encuentro forma de resolverlo!.
Tengo una aplicación sencilla de estilo múltiples clientes – un solo servidor. La idea es que el servidor cree un hilo por cada cliente que llega (hasta esta parte funciona perfecto) como funcionaba en consola quise agregarle una GUI sencilla que por medio de un botón inicie un hilo para el servidor.

El inconveniente esta justo cuando presiono el botón “iniciar” todo queda clavado (creo yo que queda en el hilo servidor esperando por clientes) y la GUI deja de responder.

Espero que me puedan ayudar. Les dejo el codigo:

VistaPrincipal:
Código:
public class VistaPrincipal extends JFrame {

private JPanel contentPane;
private Runnable server = null;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
VistaPrincipal frame = new VistaPrincipal();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public VistaPrincipal() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 497, 310);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);

JLabel lblClientes = new JLabel("Clientes: ");
lblClientes.setBounds(10, 11, 77, 14);
contentPane.add(lblClientes);

JList<String> listaCLientes = new JList<String>();
JList<String> listaLog = new JList<String>();


JPanel panelClientes = new JPanel();
panelClientes.setBounds(10, 29, 110, 202);
contentPane.add(panelClientes);
panelClientes.setLayout(null);

JScrollPane scrollClientes = new JScrollPane(listaCLientes);
scrollClientes.setBounds(0, 0, 110, 202);
panelClientes.add(scrollClientes);

JPanel panelLog = new JPanel();
panelLog.setBounds(130, 29, 341, 202);
contentPane.add(panelLog);
panelLog.setLayout(null);

JScrollPane scrollLog = new JScrollPane(listaLog);
scrollLog.setBounds(0, 0, 341, 232);
panelLog.add(scrollLog);

JButton btnSalir = new JButton("Salir");
btnSalir.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
dispose();
}
});
btnSalir.setBounds(382, 242, 89, 23);
contentPane.add(btnSalir);

JButton btnIniciar = new JButton("Iniciar");
btnIniciar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {

try {
server = new Servidor();
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "Error al crear el servidor, cierre la maquina virtual de java e intentelo nuevamente", "Error!", JOptionPane.ERROR_MESSAGE);
}

if (server !=  null) {
Thread hilo = new Thread(server);
hilo.run();
}
}
});
btnIniciar.setBounds(20, 242, 89, 23);
contentPane.add(btnIniciar);

JButton btnStop = new JButton("Stop");
btnStop.setBounds(119, 242, 89, 23);
contentPane.add(btnStop);

//FIN CREACION DE VISTA
}
}


Servidor.java
:
Código:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

import javax.swing.JOptionPane;

public class Servidor implements Runnable {

private int puerto = 20000;
private ServerSocket socket;

public Servidor() throws IOException {
this.socket = new ServerSocket(this.puerto);
}

public void run() {

while (true) {
Socket cliente = null;
try {
cliente = socket.accept();
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "Error al aceptar nuevo Cliente", "Error!", JOptionPane.ERROR_MESSAGE);
}

if (cliente != null) {
Runnable nuevoCliente = new HiloCliente(cliente);
Thread hilo = new Thread(nuevoCliente);
hilo.run();
}
}
}

}

HiloCliente.java:
Código:
import java.net.Socket;

public class HiloCliente implements Runnable {

private Socket socket;

public HiloCliente (Socket socket) {

this.socket = socket;
}

@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("Cliente");
}

}

P.D: como hago para que el codigo se vea con color? :P


« Última modificación: 10 Febrero 2014, 14:49 pm por JavierJV » En línea

egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: Problema Hilo Servidor.
« Respuesta #1 en: 10 Febrero 2014, 14:44 pm »

En vez de llamar a la función run, llama a la función start para que inicie un nuevo hilo.


Saludos


En línea

JavierJV

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Problema Hilo Servidor.
« Respuesta #2 en: 10 Febrero 2014, 14:49 pm »

En vez de llamar a la función run, llama a la función start para que inicie un nuevo hilo.


Saludos

:O magia! xD jaja muchas gracias! funciona.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Re: Problema con Ajax e Internet Explorer (sólo en el servidor) [Solucionado]
PHP
KateLibby 9 9,116 Último mensaje 25 Mayo 2011, 17:28 pm
por KateLibby
acceso a servidor openvpn -as [solucionado]
Redes
exeny 2 4,048 Último mensaje 20 Junio 2011, 05:14 am
por exeny
problema con certificado seguridad del servidor (solucionado)
Windows
Paul Young 2 2,876 Último mensaje 31 Julio 2012, 23:25 pm
por Paul Young
[Solucionado]Servidor ssh wifi android
Android
Anonymous250 2 3,924 Último mensaje 26 Septiembre 2012, 20:31 pm
por Anonymous250
[SOLUCIONADO]averiguar privilegios y en el hilo.
Programación C/C++
Swain 4 2,319 Último mensaje 1 Agosto 2014, 01:42 am
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines