Comunidad de diseño web y desarrollo en internet online

Chat tiempo real con Java (servidor) y Flash (cliente)?

Citar            
MensajeEscrito el 16 Jul 2007 08:38 pm
Saludos camaradas de CristaLab, Fredie, Conejo entros que me han oriendato.

Hasta el momento nadie de manera conclusa y directa ha podido indicarme o guiarme con ejemplos de como hacer un chat tiempo real con Java (servidor) y Flash (cliente), que parsee XMLs (a lo que he investigado es la mejor manera).

En este link donde quieren hacer un juego multijugador en tiempo real se ha vuelto tan extenso que en realidad no dice nada en concreto.

Asi que camaradas, administradores y moderadores PORFAVOR: los foros son para recortar tiempo en desarrollo y busquedas no para alargar conversaciones de cuanto sabemos, habemos muchos que buscamos y necesitamos de su ayuda y por el prestigio de este sitio entramos.

Asi que, quien puede guiarme como un niño de la mano con esto?:

1.- Crear un servidor con Java que parsee XMLs y se comunique con el cliente Flash?
2.- Un cliente en Falsh que envie XMLs al servidor JAVA?

Asi de simple...

NOTA: Ya tengo mi servidor APACHE corriendo y funciona bien, tengo la JVM 1.5 con Eclipse como IDE.

Suerte y MIL GRACIAS.

Por ralph

6 de clabLevel



 

msie7
Citar            
MensajeEscrito el 20 Jul 2007 10:32 am
Personalmente te recomendaría optar por usar (Flash*Flex) + FDS (LiveCycle) + JavaEE, con esta trilogía, lograrás obtener la interface espectacular de tu cliente en Flash, luego incluirlo dentro de Flex, comunicando ambos de manera interna por mensajes, y una vez tienes el flujo en Fx, usar LiveCycle para conectar de manera activa con tu servidor en JavaEE que se encargará de gestionar todo, y mantener a los clientes actualizados en tiempo real.

Suerte... :)

Por MorphX

SWAT Team

982 de clabLevel

3 tutoriales

  SWAT

La Telaraña Digital

firefox
Citar            
MensajeEscrito el 20 Jul 2007 02:35 pm
Excelente MorphX!, te agradezco el consejo.

Sabes?, tengo un pequeño problema: ¡NO HE TRABAJADO CON LAS TECNOLOGIAS QUE MENCIONAS!

Con algo simple, eficiente y funcional me basta de ahi entendere y lo hare mas complicado.

Gracias camaradas sigo en busca.

Por ralph

6 de clabLevel



 

msie7
Citar            
MensajeEscrito el 24 Jul 2007 01:55 pm
Estoy desesperado, ninguna ayuda por ningun lado.

Alguien sabe como hacerlo?...

Por ralph

6 de clabLevel



 

msie7
Citar            
MensajeEscrito el 26 Jul 2007 03:01 pm
Tal vez con oregano puedas hacerlo.
El asunto es que no es tan simple, tiene su laboriosidad, hacerlo, y la verdad si algo nos falta es tiempo (Hablo por mi)

Por rolv

Claber

2000 de clabLevel

3 tutoriales

 

firefox
Citar            
MensajeEscrito el 26 Jul 2007 03:18 pm
Ok, entiendo.

Gracias Ramiro, sigo en busca y tratando, tratando ...

Suerte

Por ralph

6 de clabLevel



 

msie7
Citar            
MensajeEscrito el 09 Ene 2008 01:34 am
mira hay un chat que se llama "123 Flash Chat Server 6.8.1" y es justo lo que tu nesesitas por un presio de unos dolares te dan una lesencia unica con soporte por un año pero la lisencia es tulla y lo podras usar por siempre el chat tiene un demo que es completamente funcional con la unica limitacion que se inicia cada 10 minutos y hay que estar entrando cada 10 minutos pero en en java y el client en flahs soporta audio vudeo y tiene un reproductor de mp3 estreming ademas tiene una pisarra para escrivir y dibujar tambien permite suvir imajenes a la sala y lo mejor de todo se puede instalr en windo xp y no se nesesita de conosimiento ni de servidores por que el programa es su propio sever crea sus cidigos y es completamente configurable aora mi idea es que mejor baja la version demo y trata de chaquearla si lo logras acuerdate de mi mi mail es [email protected] me pasas la medisina para yo tambien podr aselo al mio ya que yo si no se nada de programacion :d

Por eben_eser144000

0 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 10 Ene 2008 12:03 am
Yo recomiendo usar el SmartFoxServer, actualmente ando sobre un juego online para una campaña promocional de unos helados famosos de por aquí, y basicamente fue la mejor solucion que encontramos a nuestras necesidades sin llegar al exceso de precio que posee actualmente el FlashMediaServer.

Por otro lado, si requieres algo mas Open Source (y que en la mayoria de las ocasiones es gratuito), puedes optar por Red5.
Por otro lado, hoy en dia el uso de servidores con sockets XML es old school en mi opinion dado que en Flash 6 era la unica alternativa de una comunicacion vía sockets en esa epoca. Ahora afortunadamente Flash ha crecido y cuentas con mas cosas.

Saludos!

Por tangamampilia

.GAIA Developer

961 de clabLevel


6 articulos

Genero:Masculino   Anime Bloggers

México, D.F.

safari
Citar            
MensajeEscrito el 05 Jun 2008 10:01 pm
Hola, Recientemente como proyecto para la clase de programacion avanzada, tuvimos que desarrollar una aplicacion que incluyera el uso de Sockets en Java, para este caso decidimos implementar un Chat el cual incluyera un cliente en Flash y uno en Java, para el primer caso utilizamos el objeto XMLSocket de ActionScript. El objeto XMLSocket implementa sockets en un cliente el cual permite que el equipo que ejecuta el Flash Player pueda comunicarse con un servidor identificado por una dirección IP o nombre de dominio. no se si te interese pero aca tenemos una solucion:http://www.bonnzai.com/index.php?option=com_content&view=article&id=20:chat-java-con-sockets-hilos-y-cliente-en-flash&catid=2:ingenieria-telematica
:cool:

Por pardocorp

0 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 08 Dic 2008 03:03 pm
Lo primero dar las gracias a cristal lab, llevo años entrando aquí de vez en cuando para mirar algunas cosas pero este es mi primer post.
Lo del servidor java para un cliente flash me interesa muchisimo dada la rapidez que tiene un servidor de este tipo para trabajar con flash.
Vamos a ver, el post anterior el link que da esta obsoleto ya, la pagina parece caida, afortunadamente, yo llevo un tiempo ya luchando y guardé toda la página, a continuación pego el código del servidor java, cliente flash y cliente java que en ese post se daba.
Además encontré este link que es el proyecto fin de carrera de unos señores que puede sernos útil. En él, no esta todo el código desafortunadamente, pero si que explican como lo han hecho, programas que han usado, hacen un estudio de mercado comparando los diversos servidores existentes (unit, orégano Server, flash Server… etc). El link es:

https://upcommons.upc.edu/pfc/bitstream/2099.1/3703/2/35773-1.pdf

Solo deciros que yo he conseguido hacer que funcione mas o menos el código que viene a continuación para el cliente java pero los errores me los da en el servidor java y son:

JLista listanodo = new JLista(servidorpadre);
listanodo.crearjnodo(socketcliente);
ListaClientes listaclientes = new ListaClientes();

Si a alguien le interesa el tema entre todos podríamos hacer que funcione todo esto ya que parece que tiene potencial. Crear un Chat que funcione rápido esta bien porque también abre las puertas a la creación de un juego multiusuario en flash etc.
El cliente flash no funciona en absoluto, supongo que es xq falta la interfaz grafica, no lo se… si pardocorp pudiera ayudarnos bien, si no a ver que hacemos entre todos. Un saludo, ahí va el código del servidor java, cliente flash y cliente java, un saludo gente!



JServidor:


/**
* @(#)JServidor.java
*
* JServidor application
*
* @author Ronald Lugo
* @author Edwin Pardo
* @web www.bonnzai.com www.bandicut.net
* @version 1.00 2008/3/8
* @licencia GNU/GPL http://www.viti.es/gnu/licenses/gpl.html
*/
import java.io.*; // libreria para clases PrintStream, PrintWriter, BufferedReader
import java.net.*; // libreria para clases ServerSocket, Socket
import java.awt.event.*; // libreria para el manejo de eventos
import java.awt.*; // libreria para el manejo de elementos de interfaz
import javax.swing.*; // libreria para el manejo de mejores interfaces graficas
import javax.swing.UIManager.LookAndFeelInfo; // complemento a la libreria swing

public class JServidor extends JFrame
{
//JLista listanodo; // objeto tipo clase ListaNodos
JPanel contentservidor; // panel(ventana) servidor
JLabel lbltitulo = new JLabel(); // label titulo
JScrollPane scrollservidor = new JScrollPane(); // scroll para mensajes
JTextArea ctxtservidor = new JTextArea(); // caja de texto area donde aparecen todos los mensajes
JButton btniniciar = new JButton(); // boton parar servidor
JButton btnsalir = new JButton(); // boton parar servidor
JChat nuevojchat;

public JServidor()
{
try
{
iniciarservidor();
/*
System.out.println("Iniciando Servidor Java");
socketservidor = new ServerSocket(8850); // socketserv : atributo de la clase JServidor de tipo ServerSocket
socketcliente = null; // socketcliente : atributo de la clase JServidor de tipo Socket
*/
//iniciarescucha();
}
catch(Exception e)
{
System.out.println("Error al inicializar el socket servidor");
ctxtservidor.setText(ctxtservidor.getText() + "Error al inicializar el socket servidor\n");
}

} // FIN constructor JServidor

public void iniciarservidor()
{
Color colorfondo = Color.black;
Color colortitulo = Color.white;
Color colorchat = Color.white;

contentservidor = (JPanel) this.getContentPane();
contentservidor.setLayout(null);
contentservidor.setBackground(colorfondo);
this.setSize(new Dimension(600, 300));
this.setTitle("CHAT SOCKETS JAVA FLASH - Servidor");

lbltitulo.setFont(new Font("SansSerif",1, 15));
lbltitulo.setText("Servidor Chat Socket Java Flash");
lbltitulo.setForeground(colortitulo);
lbltitulo.setBounds(new Rectangle(10, 10, 300, 30)); // (x,y,ancho,alto)

scrollservidor.setBounds(new Rectangle(10, 90, 570, 150));
scrollservidor.setBackground(colorchat);
scrollservidor.getViewport().add(ctxtservidor, null);
scrollservidor.setVisible(false);
scrollservidor.setAutoscrolls(true);

ctxtservidor.setBackground(colorchat);
ctxtservidor.setEditable(false);
ctxtservidor.setVisible(false);

btniniciar.setText("Iniciar");
btniniciar.setBounds(new Rectangle(10, 50, 80, 20));
btniniciar.setEnabled(true);
btniniciar.setVisible(true);

btnsalir.setText("Salir");
btnsalir.setBounds(new Rectangle(100, 50, 80, 20));
btnsalir.setEnabled(false);
btnsalir.setVisible(true);

contentservidor.add(lbltitulo, null); //adiciona los objetos al panel
contentservidor.add(btniniciar, null); //adiciona los objetos al panel
contentservidor.add(btnsalir, null); //adiciona los objetos al panel
contentservidor.add(scrollservidor, null); //adiciona los objetos al panel

btniniciar.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
btniniciar_actionPerformed(e);
}
});

btnsalir.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
btnsalir_actionPerformed(e);
}
});
} // FIN iniciarservidor

public void btniniciar_actionPerformed(ActionEvent e)
{
btniniciar.setEnabled(false);
btnsalir.setEnabled(true);
scrollservidor.setVisible(true);
ctxtservidor.setVisible(true);
try
{
//JChat nuevojchat = new JChat();
nuevojchat = new JChat(this);
nuevojchat.start();
}
catch(Exception e2)
{

}
//iniciarescucha();
} // FIN btniniciar_actionPerformed

public void btnsalir_actionPerformed(ActionEvent e)
{
ctxtservidor.setText(ctxtservidor.getText() + "El servidor ha sido deshabilitado\n");
System.out.println("El servidor ha sido deshabilitado");
nuevojchat.stop();
System.exit(0);
} // FIN btniniciar_actionPerformed

class JChat extends Thread
{
private ServerSocket socketservidor; // socket servidor
private Socket socketcliente; // socket de solicitud del cliente
JServidor servidorpadre;

public JChat(JServidor serv) throws IOException
{
servidorpadre = serv;
} // FIN constructor JHilo

public void run()
{
try
{
ctxtservidor.setText(ctxtservidor.getText() + "Iniciando Servidor Java\n");
System.out.println("Iniciando Servidor Java");
socketservidor = new ServerSocket(8850); // socketserv : atributo de la clase JServidor de tipo ServerSocket
socketcliente = null; // socketcliente : atributo de la clase JServidor de tipo Socket
iniciarescucha();
}
catch (Exception e)
{
//System.out.println("no es posible leer lo que el cliente envia");
}

finally
{
ctxtservidor.setText(ctxtservidor.getText() + "El servidor está finalizando\n");
System.out.println("El servidor está finalizando");
}
}

public void iniciarescucha()
{
ctxtservidor.setText(ctxtservidor.getText() + "Servidor Java inicializado ... esperando conexiones\n");
System.out.println("Servidor Java inicializado ... esperando conexiones");
JLista listanodo = new JLista(servidorpadre);
while(true) // inicio de proceso de espera de clientes
{
try
{
socketcliente = socketservidor.accept(); // acepta socket cliente
ctxtservidor.setText(ctxtservidor.getText() + "Ingresa: " + socketcliente + "\n");
System.out.println("Ingresa: " + socketcliente);
listanodo.crearjnodo(socketcliente);
}
catch(Exception e)
{
ctxtservidor.setText(ctxtservidor.getText() + "No se pudo atender una solicitud del cliente\n");
System.out.println("No se pudo atender una solicitud del cliente");
}
} // FIN ciclo espera
} // FIN iniciarescucha
}

public static void main(String[] args) throws IOException, ConnectException // Exception necesario para socket
{
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
try
{
JServidor servidor = new JServidor(); // Instancia objeto servidor de tipo clase JServidor
ListaClientes listaclientes = new ListaClientes();
Dimension tamanopantalla = Toolkit.getDefaultToolkit().getScreenSize();
Dimension servidortamano = servidor.getSize();

if (servidortamano.height > tamanopantalla.height)
{
servidortamano.height = tamanopantalla.height;
}
if (servidortamano.width > tamanopantalla.width)
{
servidortamano.width = tamanopantalla.width;
}

servidor.setLocation((tamanopantalla.width - servidortamano.width) / 2,(tamanopantalla.height - servidortamano.height) / 2);
servidor.setVisible(true);
}
catch(Exception e)
{
System.out.println("La instancia servidor no pudo ser inicializada");
}
} // FIN main
} // FIN JServidor



Jcliente Flash:



/**
* @(#)JServidor.java
*
* JServidor application
*
* @author Ronald Lugo
* @author Edwin Pardo
* @web www.bonnzai.com www.bandicut.net
* @version 1.00 2008/3/8
* @licencia GNU/GPL http://www.viti.es/gnu/licenses/gpl.html
*/
//stop();

mySocket = new XMLSocket();

mySocket.onConnect = function(success)
{
if (success)
{
msgArea.htmlText += "Conexión con <b>JServer :)</b> establecida!";
stop();
}
else
{
//msgArea.htmlText += "No se pudo conectar <b>JServer :(</b><br>Es posible que no se haya ininiciado aún ";
gotoAndPlay(31);
stop();
}
;

}

mySocket.onClose = function()
{
msgArea.htmlText += "<b>Server connection lost</b>"
}

XMLSocket.prototype.onData = function(msg)
{
msgArea.htmlText += msg;
}

mySocket.connect("192.168.0.35", 8850)
//mySocket.send("CSJF_usuario:chat" + "\n");

//--- Handle button click --------------------------------------
function sendMsg()
{
if (inputMsg.htmlText != "")
{
mySocket.send(inputMsg.htmlText + "\n");
//inputMsg.htmlText= "";
}
}
//trace("hola");
si.onPress = function ()
{
if (login.text != "")
{
//trace ("CSJF_usuario:"+login.text);
mySocket.send("CSJF_usuario:"+login.text+ "\n");
gotoAndPlay(29);
}
}

//onPress = trace("hola");
/*entrar.onPress = function() {

//user.login(nick_txt.text, "", true);
mySocket.send("CSJF_usuario:"+login.text+ "\n");
gotoAndPlay(29);

}*/

Jcliente Java:



/**
* @(#)JServidor.java
*
* JServidor application
*
* @author Ronald Lugo
* @author Edwin Pardo
* @web www.bonnzai.com www.bandicut.net
* @version 1.00 2008/3/8
* @licencia GNU/GPL http://www.viti.es/gnu/licenses/gpl.html
*/
import java.io.*; // libreria para clases PrintStream, BufferedReader
import java.net.*; // libreria para clase Socket
import java.awt.event.*; // libreria para el manejo de eventos
import java.awt.*; // libreria para el manejo de elementos de interfaz
import javax.swing.*; // libreria para el manejo de mejores interfaces graficas
import javax.swing.UIManager.LookAndFeelInfo; // complemento a la libreria swing

public class JCliente extends JFrame
{
private Socket socketcliente; // socket de conexion al servidor
private PrintStream clienteenvia; // elemento de solicitud al servidor
BufferedReader clienterecibe; // elemento de recepcion de solicitudes del servidor
String textorecibe; // cadena que guarda los mensajes del servidor
Hiloescucha hilocliente; // objeto tipo Hiloescucha

JPanel contentpane; // panel(ventana) chat
JTextField ctxtlogin = new JTextField(); // caja de texto para el login
JTextField ctxtmensaje = new JTextField(); // caja de texto mensaje
JTextArea ctxtusuarios = new JTextArea(); // caja de texto area donde aparecen los usuarios conectados
JTextArea ctxtchat = new JTextArea(); // caja de texto area donde aparecen todos los mensajes
JLabel lbltitulo = new JLabel(); // label titulo
JLabel lbllogin = new JLabel(); // label login
JScrollPane scrollchat = new JScrollPane(); // scroll para mensajes
JScrollPane scrollusuarios = new JScrollPane(); // scroll para usuarios
JButton btniniciar = new JButton(); // boton aceptar cambio de nick
JButton btnenviar = new JButton(); // boton enviar mensaje
JButton btnsalir = new JButton(); // boton desconectar y salid del chat

public JCliente()
{
try
{
System.out.println("Iniciando Cliente Java");
iniciar_sesion(); // Establece la interface del cliente
socketcliente = new Socket("localhost", 8850); // solicitud de conexion por socket al servidor
clienteenvia = new PrintStream(socketcliente.getOutputStream()); // peticiones al servidor
clienterecibe = new BufferedReader(new InputStreamReader(socketcliente.getInputStream())); // recibe del servidor
hilocliente = new Hiloescucha(this); // creación del hilo de recepción de mensajes
hilocliente.start(); // inicio de recepción de mensajes
}
catch(Exception e) // Si el servidor no ha iniciado
{
ctxtlogin.setEditable(false); // deshabilita edicion caja de texto login
btniniciar.setEnabled(false); // deshabilita clic en boton iniciar
String mensajeerror = "No existe comunicación entre el socket cliente y el servidor. El servidor no está iniciado o no existe comunicacion entre cliente y servidor";
System.out.println(mensajeerror);
JOptionPane.showMessageDialog(null,mensajeerror, "MENSAJE DEL ADMINISTRADOR", JOptionPane.WARNING_MESSAGE); // mensaje de alerta del error
System.exit(0);
}
} // FIN constructor JCliente

private void iniciar_sesion() throws Exception
{
// Colores del chat
Color colorfondo = Color.black;
Color colorchat = Color.white;
Color colorusuarios = Color.white;
Color colormensaje = Color.white;
Color colortitulo = Color.white;
Color colorlogin = Color.white;
Color colorfondocajalogin = Color.white;
Color colorfuentecajalogin = Color.black;

contentpane = (JPanel) this.getContentPane(); // referencia al panel actual
contentpane.setLayout(null); // limpieza del panel
contentpane.setBackground(colorfondo); // fondo del panel
this.setSize(new Dimension(700, 500)); // tamaño del panel
this.setTitle("CHAT SOCKETS JAVA FLASH"); // titulo del panel

lbltitulo.setFont(new Font("SansSerif",1, 20)); // formato de letra del título del chat
lbltitulo.setText("Chat Socket Java Flash"); // titulo del chat
lbltitulo.setForeground(colortitulo); // color de letra del titulo
lbltitulo.setBounds(new Rectangle(227, 5, 274, 33)); // (x,y,ancho,alto)

// LOGIN //
lbllogin.setFont(new Font("SansSerif",1, 15));
lbllogin.setText("usuario:");
lbllogin.setForeground(colorlogin);
lbllogin.setBounds(new Rectangle(230, 100, 60, 20)); // (x,y,ancho,alto)

ctxtlogin.setBounds(new Rectangle(300, 100, 100, 20));// (x,y,ancho,alto)
ctxtlogin.setFont(new java.awt.Font("SansSerif",1,15));
ctxtlogin.setBackground(colorfondocajalogin);
ctxtlogin.setForeground(colorfuentecajalogin);

btniniciar.setText("Iniciar");
btniniciar.setBounds(new Rectangle(270, 130, 80, 20));

// FIN LOGIN //

scrollchat.setBounds(new Rectangle(30, 50, 460, 340)); // tamaño del objeto scroll
scrollchat.setBackground(colorchat); //
scrollchat.getViewport().add(ctxtchat, null); // adicion de elementos a la barra de desplazamiento
scrollchat.setVisible(false); // por defecto se oculta la barra de desplazamiento

ctxtchat.setBackground(colorchat); // color de fondo de caja de texto de mensajes
ctxtchat.setEditable(false); // por defecto la caja de mensajes no es modificable
ctxtchat.setVisible(false);

scrollusuarios.setBounds(new Rectangle(500, 50, 150, 340));
scrollusuarios.setBackground(colorusuarios);
scrollusuarios.getViewport().add(ctxtusuarios, null);
scrollusuarios.setVisible(false);

ctxtusuarios.setBackground(colorusuarios);
ctxtusuarios.setEditable(false);
ctxtusuarios.setVisible(false);

ctxtmensaje.setBounds(new Rectangle(30, 420, 460, 30)); //se crean las dimensiones de cada objeto
ctxtmensaje.setBackground(colormensaje);// se especifica el color del objeto
ctxtmensaje.setEditable(false);// se deshabilita la caja de texto del mensaje hasta que no se logee
ctxtmensaje.setVisible(false);

btnenviar.setText("Enviar");
btnenviar.setBounds(new Rectangle(500, 420, 80, 20));
btnenviar.setEnabled(false);
btnenviar.setVisible(false);

btnsalir.setText("Salir");
btnsalir.setBounds(new Rectangle(600, 420, 80, 20));
btnsalir.setEnabled(true);
btnsalir.setVisible(true);


// adicion de objetos al panel
contentpane.add(lbltitulo, null); //adiciona los objetos al panel
contentpane.add(lbllogin, null); //adiciona los objetos al panel
contentpane.add(ctxtlogin, null); //adiciona los objetos al panel
contentpane.add(btniniciar, null); //adiciona los objetos al panel
contentpane.add(scrollchat, null); //adiciona los objetos al panel
contentpane.add(scrollusuarios, null); //adiciona los objetos al panel
contentpane.add(ctxtmensaje, null); //adiciona los objetos al panel
contentpane.add(btnenviar, null); //adiciona los objetos al panel
contentpane.add(btnsalir, null); //adiciona los objetos al panel

//

// accion de escucha sobre la caja login
ctxtlogin.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
ctxtlogin_actionPerformed(e);
}
});
// FIN ctxtlogin.addActionListener

// accion de escucha sobre el botón login
btniniciar.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
btniniciar_actionPerformed(e);
}
});
// FIN btniniciar.addActionListener

// accion de escucha sobre la caja de escritura de mensajes
ctxtmensaje.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
ctxtmensaje_actionPerformed(e);
}
});
// FIN ctxtmensaje.addActionListener

// lectura permanente es escritura en el teclado para validar que no escriba un usuario con mas de 10 digitos
ctxtlogin.addKeyListener(new KeyAdapter()
{
public void keyTyped(KeyEvent e)
{
char caracter = e.getKeyChar();
String texto = ctxtlogin.getText();

// Verificar si existen más de 10 caracteres
if(texto.length() >= 10)
{
JOptionPane.showMessageDialog(null,"El usuario no puede tener más de 10 dígitos", "MENSAJE DEL ADMINISTRADOR", JOptionPane.WARNING_MESSAGE);
e.consume();
}
// e.consume(); // ignorar el evento de teclado
}
}); // FIN ctxtlogin.addKeyListener

// acción de escucha en el botón de enviar mensaje
btnenviar.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
btnenviar_actionPerformed(e);
}
}); // FIN btnenviar.addActionListener

// acción de escucha en el botón salir
btnsalir.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
btnsalir_actionPerformed(e);
}
}); // FIN btnsalir.addActionListener

} // FIN iniciar_sesion

// evento al oprimir el botón de login
public void btniniciar_actionPerformed(ActionEvent e)
{
String login = ctxtlogin.getText(); // login ingresado por el usuario
if(login.length() == 0 )
{
ctxtlogin.requestFocus();
JOptionPane.showMessageDialog(null,"Debe digitar un nombre de usuario.", "MENSAJE DEL ADMINISTRADOR", JOptionPane.WARNING_MESSAGE);
}
else
{
ctxtlogin.setEditable(false); // deshabilita edicion caja de texto login
ctxtlogin.setVisible(false); // deshabilita visibilidad caja de texto login
btniniciar.setEnabled(false); // deshabilita clic en boton iniciar
btniniciar.setVisible(false); // deshabilita visibilidad en boton iniciar
lbllogin.setVisible(false); // deshabilita visibilidad en el texto de usuario

scrollchat.setVisible(true); // se habilita el panel scroll de chat
//ctxtchat.setEditable(true); // se habilita la caja de mensajes
ctxtchat.setVisible(true); // se habilita la visibilidad de la caja de mensajes

scrollusuarios.setVisible(true); // se habilita el panel scroll de chat
//ctxtusuarios.setEditable(true); // se habilita la caja de lista de usuarios
ctxtusuarios.setVisible(true); // se habilita la visibilidad de la caja lista de usuarios

ctxtmensaje.setEditable(true); // se habilita la edición de la caja de envio de mensajes
ctxtmensaje.setVisible(true); // se habilita la visibilidad de la caja envio de mensajes
ctxtmensaje.requestFocus(); // ubica el cursor en la caja de mensaje

btnenviar.setEnabled(true); // se habilita el botòn de enviar
btnenviar.setVisible(true); // se habilita visibilidad para el botón enviar

//btnsalir.setEnabled(true);
//btnsalir.setVisible(true);

clienteenvia.println("CSJF_usuario:" + login);
//clienteenvia.println("CSJF_usuario:ronald");
try
{
if(textorecibe.startsWith("CSJF_ERROR:"))
{
String[] errores = textorecibe.split("CSJF_ERROR:");
System.out.println("ERROR: " + errores[1]);
}
else
{
ctxtchat.setText(textorecibe); // visualizar respuesta del servidor
System.out.println("Servidor: " + textorecibe);
}
}
catch(Exception es)
{
//System.out.println("ERROR: El servidor no responde");
}
}
} // FIN btniniciar_actionPerformed

// al oprimir enter en el logín
void ctxtlogin_actionPerformed(ActionEvent e)
{
btniniciar_actionPerformed(e);
} // FIN ctxtlogin_actionPerformed

// al oprimir enter en la caja de escritura del mensaje
void ctxtmensaje_actionPerformed(ActionEvent e)
{
btnenviar_actionPerformed(e);
} // FIN ctxtmensaje_actionPerformed

// cuando se envíe el mensaje
public void btnenviar_actionPerformed(ActionEvent e)
{
String mensaje = ctxtmensaje.getText(); // mensaje ingresado por el usuario
if(mensaje.length() != 0 )
{
clienteenvia.println(mensaje);
}
ctxtmensaje.requestFocus();
ctxtmensaje.setText("");
} // FIN btnenviar_actionPerformed

// al oprimir el botón salir
public void btnsalir_actionPerformed(ActionEvent e)
{
hilocliente.stop();
System.exit(0);
} // FIN btnsalir_actionPerformed

public static void main(String[] args) throws IOException, ConnectException // Exception necesario para socket
{
// especificaciones iniciales de la interfaz del cliente
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
try
{
JCliente cliente = new JCliente(); // Instancia objeto cliente de tipo clase JCliente
Dimension tamanopantalla = Toolkit.getDefaultToolkit().getScreenSize();
Dimension clientetamano = cliente.getSize();

if (clientetamano.height > tamanopantalla.height)
{
clientetamano.height = tamanopantalla.height;
}
if (clientetamano.width > tamanopantalla.width)
{
clientetamano.width = tamanopantalla.width;
}

cliente.setLocation((tamanopantalla.width - clientetamano.width) / 2,(tamanopantalla.height - clientetamano.height) / 2);
cliente.setVisible(true);
}
catch(Exception e)
{
System.out.println("La instancia cliente no pudo ser inicializada");
}
} // FIN main
} // FIN JCliente


// clase encargada de leer los datos y enviarlos. Es un hilo

class Hiloescucha extends Thread
{
private JCliente Hiloescucha; // objeto JCliente

public Hiloescucha(JCliente cliente) throws Exception
{
this.Hiloescucha = cliente;
}

public void run()
{
String textorecibido = "";

try
{
while ((textorecibido = Hiloescucha.clienterecibe.readLine())!=null)
{
if(textorecibido.startsWith("CSJF_conectados:")) // si el servidor envio los usuarios conectados
{
String[] mjeconectados = textorecibido.split("CSJF_conectados:");
String[] usuariosconectados = mjeconectados[1].split(",");
Hiloescucha.ctxtusuarios.setText("");
for(int i = 0; i < usuariosconectados.length; i++)
{
Hiloescucha.ctxtusuarios.setText(Hiloescucha.ctxtusuarios.getText() + usuariosconectados[i].toString().trim() + "\n");
}
}
else
if(textorecibido.startsWith("CSJF_ERROR:")) // si el servidor envio un error
{
String[] mjeerror = textorecibido.split("CSJF_ERROR:");
String errorlogin = mjeerror[1].toString();
JOptionPane.showMessageDialog(null,errorlogin, "MENSAJE DEL ADMINISTRADOR", JOptionPane.WARNING_MESSAGE);
System.exit(0);
}
else
{
Hiloescucha.ctxtchat.setText(Hiloescucha.ctxtchat.getText() + textorecibido.trim() + "\n"); //nuevo mensaje
}
}
}
catch(IOException e) // si se interrumpe la comunicación o el servidor se deshabilita
{
System.out.println("La comunicación con el servidor fue interrumpida");
Hiloescucha.ctxtchat.setText(Hiloescucha.ctxtchat.getText() + "El servidor ha sido deshabilitado");
Hiloescucha.ctxtchat.setEditable(false);
Hiloescucha.ctxtchat.disable();
Hiloescucha.ctxtusuarios.setEditable(false);
Hiloescucha.ctxtchat.disable();
Hiloescucha.ctxtmensaje.setEditable(false);
Hiloescucha.ctxtchat.disable();
Hiloescucha.btnenviar.disable();
Hiloescucha.btnsalir.requestFocus();
}
} // FIN run

} // FIN Hiloescucha

Por majaus

1 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.