cliente.java
aplicacion cliente del chat simple desarrollado en java.
compilar con :
javac cliente.java
ejecutar con :
java cliente [direccion ip o nombre del equipo servidor]
***********************************************************************/
// Librerias Necesarias
import java.awt.*; // modo grafico
import java.io.*; // entrada/salida
import java.net.*; // funciones de red
public class cliente extends Frame {
// elementos de la ventana
static Button enviar = new Button("Enviar");
static Button cerrar = new Button("Cerrar");
static TextArea texto = new TextArea(10,40);
static TextField mensaje = new TextField(40);
// Componentes de la comunicacion
static Socket servidor; // socket servidor
static InetAddress direccion; // direccion del servidor
static String mensa = "";
static PrintStream ps; // flujo de salida
static DataInputStream datos; // flujo de entrada
// funcion principal
public static void main( String args[]) {
//crear instancia ventana
new cliente();
//crear socket cliente relacionado con el servidor
try{
direccion = getdir(args); // llamada a getdirs()
servidor = new Socket(direccion, 5000); // creacion del socket servidor
activar();
// inicializar el flujo de salida con los datos del servidor
ps = new PrintStream(servidor.getOutputStream());
// inicializar el flujo de entrada
datos = new DataInputStream(servidor.getInputStream());
texto.append("Conectado con el servidor ...\n");
// ciclo de recepcion de mensajes
while((mensa = datos.readLine()) != null){
texto.append("Servidor dice : "+mensa+"\n");
};
texto.append("Desconectado del servidor ...\n");
cerrarconexion();
desactivar();
}catch (IOException e) { // en caso de error de entrada/salida
System.out.println("Error al conectar con el servidor");
System.exit(1);
};
}
// funcion que grafica
public cliente() {
// titulo de la ventana
setTitle("Java Chat Cliente");
// elementos de la ventana
Panel pan = new Panel();
pan.add(enviar);
pan.add(cerrar);
Panel pan1 = new Panel();
pan1.add(mensaje);
Panel pan2 = new Panel();
pan2.add(texto);
add("North",pan2);
add("Center",pan1);
add("South",pan);
enviar.disable();
texto.disable();
mensaje.disable();
// tama¤o constante
setResizable(false);
// organizar y mostrar
pack();
show();
}
public boolean action(Event ev, Object arg) {
// eventos en los botones
// click en el boton cerrar
if((ev.target == cerrar)&&(ev.id == 1001)){
cerrarconexion();
System.exit(0);
}
// click en el boton enviar
if((ev.target == enviar)&&(ev.id == 1001)){
if(!mensaje.getText().equals("")){
ps.println(mensaje.getText()); // enviar el contenido de texto
texto.append("Cliente dice : "+mensaje.getText()+"\n");
mensaje.setText("");
}
}
return(true);
}
// esta funcion habilita los elementos de la ventana
public static void activar(){
enviar.enable();
mensaje.enable();
}
// esta funcion deshabilita los elementos de la ventana
public static void desactivar(){
enviar.disable();
mensaje.disable();
}
// funcion que convierte la direccion ip o el nombre del equipo donde esta
// corriendo el socket servidor que se pasa como parametro al programa
public static InetAddress getdir(String ar[]){
InetAddress tem = null;
try{
// si no hay argumentos tomar localhost
if(ar.length == 0){
tem = InetAddress.getLocalHost();
}
// si hay convertirla de string a inetaddress
if(ar.length == 1){
tem = InetAddress.getByName(ar[0]);
}
// error en la direccion
}catch(UnknownHostException e){
texto.append("Error en la direccion.");
}
return(tem);
}
// funcion que cierra la conexion con el servidor
public static void cerrarconexion(){
try{
servidor.close();
}catch(IOException e){
texto.append("Error al cerrar el cliente");
};
desactivar();
}
}
**************************************************************************
servidor.java
aplicacion servidora del chat simple desarrollado en java.
compilar con :
javac servidor.java
ejecutar con :
java servidor
***********************************************************************/
// Librerias Necesarias
import java.awt.*; // modo grafico
import java.io.*; // entrada/salida
import java.net.*; // funciones de red
public class servidor extends Frame {
// elementos de la ventana
static Button enviar = new Button("Enviar");
static Button cerrar = new Button("Cerrar");
static TextArea texto = new TextArea(10,40);
static TextField mensaje = new TextField(40);
// Componentes de la comunicacion
static ServerSocket servido; // socket servidor
static Socket cliente; // socket para manejar los clientes
static String mensa = "";
static PrintStream ps; // flujo de salida
static DataInputStream datos; // flujo de entrada
// funcion principal
public static void main( String args[]) {
// crear instancia ventana
new servidor();
// crear socket servidor en el puerto 5000
// se puede cambiar a nuestro gusto
try{
servido = new ServerSocket(5000);
// error al crear el servidor
}catch (IOException e) {
System.out.println("Error al crear el Socket Servidor");
System.exit(1);
};
// ciclo para el tratamiento de los clientes
do{
try{
texto.append("Esperando Cliente ...\n");
//esperar cliente
cliente = servido.accept();
activar();
texto.append("Llego un cliente. Respondele ...\n");
// inicializacion de las estructuras para la lectura/escritura
// con los datos del cliente
ps = new PrintStream(cliente.getOutputStream());
datos = new DataInputStream(cliente.getInputStream());
// ciclo de recepcion de mensajes
while((mensa = datos.readLine()) != null){
texto.append("Cliente dice : "+mensa+"\n");
};
texto.append("\nTerminando la conexion con el cliente.\n");
cerrarconexion();
texto.append("\nEl cliente se ha desconectado.\n");
}catch (IOException e) {
texto.append("Error de Lectura / Escritura en los Sockets\n");
desactivar();
};
}while(true); // ciclo infinito. se desconecta un cliente y esperamos
// otro. para salir debemos dar click en el boton cerrar
}
// funcion que grafica
public servidor() {
// titulo de la ventana
setTitle("Java Chat Servidor");
// elementos de la ventana
Panel pan = new Panel();
pan.add(enviar);
pan.add(cerrar);
Panel pan1 = new Panel();
pan1.add(mensaje);
Panel pan2 = new Panel();
pan2.add(texto);
add("North",pan2);
add("Center",pan1);
add("South",pan);
enviar.disable();
texto.disable();
mensaje.disable();
// tama¤o constante
setResizable(false);
// organizar y mostrar
pack();
show();
}
public boolean action(Event ev, Object arg) {
// eventos en los botones
// click en el boton cerrar
if((ev.target == cerrar)&&(ev.id == 1001)){
cerrarconexion();
System.exit(0);
}
// click en el boton enviar
if((ev.target == enviar)&&(ev.id == 1001)){
if(!mensaje.getText().equals("")){
ps.println(mensaje.getText());
texto.append("Servidor dice : "+mensaje.getText()+"\n");
mensaje.setText("");
}
}
return(true);
}
// esta funcion habilita los elementos de la ventana
public static void activar(){
enviar.enable();
mensaje.enable();
}
// esta funcion deshabilita los elementos de la ventana
public static void desactivar(){
enviar.disable();
mensaje.disable();
}
// funcion que cierra la conexion con el cliente
public static void cerrarconexion(){
try{
cliente.close();
}catch(IOException e){
texto.append("Error al cerrar el cliente");
};
desactivar();
}
}
Suscribirse a:
Enviar comentarios (Atom)
0 comentarios:
Publicar un comentario