accept en ServerSocket interfiere con la GUI
Publicado por mila diaz (7 intervenciones) el 03/06/2010 10:19:04
Hola a todos
Tengo un problema con un programa... quiero aceptar varias conexiones en un servidor para implementar un chat multiusuario con interfaz gráfica. Necesito dos conexiones entre cada cliente y el servidor para intercambiar la información de conversación y la de contro (los nicks de los nuevos clientes, por ejemplo). Cada vez que un cliente se conecta, quiero su nick en un JList.
El siguiente código funciona sin interfaz gráfico... el problema es que recibo el nick del nuevo usuario (línea después de ***) pero el JList no muestra el elmento, por la sentencia accept de la siguiente pasada del while... puedo ver el elemento añadido en el JList con el debugger y con un simple System.out.println, pero el elemento no se ve. Sin embarbo, si quito el while, el nick sí se ve... he probado con un repaint() en la última línea del while y nada...
alguna sugerencia por favor?
Gracias de antemano
while (true) {
socket[contador] = socketServidor.accept();
bufferEntrada[contador] = new DataInputStream(socket[contador].getInputStream());
bufferSalida[contador] = new DataOutputStream(socket[contador].getOutputStream());
//llamada al Thread del Servidor
aceptarClientes[contador] = new servidorThread(bufferEntrada[contador], bufferSalida);
aceptarClientes[contador].start();
socketC[contador] = socketServidor2.accept();
bufferEntradaCliente[contador] = new DataInputStream(socketC[contador].getInputStream());
bufferSalidaCliente[contador] = new DataOutputStream(socketC[contador].getOutputStream());
// ***
nickName[contador] = bufferEntradaCliente[contador].readUTF();
modelo.addElement(nickName[contador]);
contador++;
}
Edit/Delete Message
Tengo un problema con un programa... quiero aceptar varias conexiones en un servidor para implementar un chat multiusuario con interfaz gráfica. Necesito dos conexiones entre cada cliente y el servidor para intercambiar la información de conversación y la de contro (los nicks de los nuevos clientes, por ejemplo). Cada vez que un cliente se conecta, quiero su nick en un JList.
El siguiente código funciona sin interfaz gráfico... el problema es que recibo el nick del nuevo usuario (línea después de ***) pero el JList no muestra el elmento, por la sentencia accept de la siguiente pasada del while... puedo ver el elemento añadido en el JList con el debugger y con un simple System.out.println, pero el elemento no se ve. Sin embarbo, si quito el while, el nick sí se ve... he probado con un repaint() en la última línea del while y nada...
alguna sugerencia por favor?
Gracias de antemano
while (true) {
socket[contador] = socketServidor.accept();
bufferEntrada[contador] = new DataInputStream(socket[contador].getInputStream());
bufferSalida[contador] = new DataOutputStream(socket[contador].getOutputStream());
//llamada al Thread del Servidor
aceptarClientes[contador] = new servidorThread(bufferEntrada[contador], bufferSalida);
aceptarClientes[contador].start();
socketC[contador] = socketServidor2.accept();
bufferEntradaCliente[contador] = new DataInputStream(socketC[contador].getInputStream());
bufferSalidaCliente[contador] = new DataOutputStream(socketC[contador].getOutputStream());
// ***
nickName[contador] = bufferEntradaCliente[contador].readUTF();
modelo.addElement(nickName[contador]);
contador++;
}
Edit/Delete Message
Valora esta pregunta


0