Ejemplo Chat Java

Share Embed Donate


Short Description

Download Ejemplo Chat Java...

Description

[código] Conexiones Cliente-Servidor me mediante sockets e...

http://casidiablo.net/java-socket-chat-basico/

gentoo linux, java, software libre y otras hierbas $HOME casidiablo.tv  Autor Contribuir  Java C# y .NET

Sígueme...

casidiablo.net Me gusta

1,324

casidiablo.net en Facebook 

Contacto

Lo que leo Be Linux My Friend Bloguear por bloguear

[código] Conexiones Cliente-Servidor me mediante sockets e...

http://casidiablo.net/java-socket-chat-basico/

Casidiablo Media Descarga Juegos El Blog de Guapacho Linux Hispano LuAuF Nierox Píllate un Linux Programación PHP, Java y C++ Programando Ideas Rincón Informático rm -rf  ¿Que es un ensayo?

Publicidad

mar, 28 2008 - 11:53 am

[código] Conexiones Cliente-Servidor mediante sockets en Java

2

tweets Por falta de tiempo me es imposible explicar este código detalladamente, tal retweet como me gustaría, pero no tengo otra opción que simplemente ponerlo. Aún así  retweet es de recordar que pueden dejar todos los comentarios que deseen, con sus dudas y sugerencias (que (que no pedidos de tareas). tareas ).

 Aún así explico un poco el resultado resultado del programa… el programa es un chat simple simple (muy simple), que usa Sockets para crear conexiones de red. Consta de un servidor (Servidor.java) y un cliente (Cliente.java), mediante los cuales se puede establecer una conversación. Si se escribe “TERMINAR” (sin comillas), la conexión se cierra.

[código] Conexiones Cliente-Servidor me mediante sockets e...

http://casidiablo.net/java-socket-chat-basico/

El resultado

El código El código fuente de Servidor.java: 001 002 003 004 005 006

import import import import import

java.io.*; java.net.*; java.awt.*; java.awt.event.*; >event.*; javax.swing.*;

?

[código] Conexiones Cliente-Servidor me mediante sockets e...

007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062

http://casidiablo.net/java-socket-chat-basico/

> public class Servidor extend   private JTextField campoIntroducir;  private JTextArea areaPantalla; ObjectOutputStream am salida;  private ObjectOutputStre ObjectInputStream m entrada;  private ObjectInputStrea  private ServerSocket servidor;  private Socket conexion;  private int contador = 1; // configurar GUI  public Servidor() { super( "Servidor" ); Container contenedor = getContentPane(); getContentPane(); // crear campoIntroducir y reg campoIntroducir = new JTextField(); campoIntroducir.setEditable( false ); campoIntroducir.addActionListener( ActionListener() { new ActionListener() // enviar mensaje al cliente actionPerformed( ActionEvent evento )  public void  actionPerformed( { enviarDatos( evento.getActionCommand() evento.getActionCommand() ); campoIntroducir.setText( "" ); } } ); contenedor.add( campoIntroducir, BorderLayout.NORTH ); // crear areaPantalla areaPantalla = new JTextArea(); contenedor.add( new JScrollPane( areaPantalla ), BorderLayout.CENTER BorderLayout.CENTER ); setSize( 300 300, , 150 ); setVisible( true ); } // fin del constructor de Servidor // configurar y ejecutar el servidor  public void  ejecutarServidor() { // configurar servidor para que reciba conexiones; procesar la try { // Paso 1: crear un objeto ServerSocket. servidor = new ServerSocket( 12345 12345, , 100 ); > while ( true ) { try {

esperarConexion(); // Paso 2: esperar una conexión.

[código] Conexiones Cliente-Servidor me mediante sockets e...

063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118

http://casidiablo.net/java-socket-chat-basico/

obtenerFlujos(); // Paso 3: obtener flujos de procesarConexion(); // Paso 4: procesar la conexión. } // procesar excepción EOFException cuando el cliente cie catch ( EOFException excepcionEOF ) { System.err.pr >System.err.pr } finally {

cerrarConexion(); ++contador;

// Paso 5: cerrar la conexión.

} } // fin de instrucción while } // fin del bloque try // procesar problemas con E/S catch ( IOException excepcionES ) { excepcionES.printStackTrace(); } } // fin del método ejecutarServido ejecutarServidor r // esperar que la conexión llegue, después mostrar información de esperarConexion() >th  private void  esperarConexion() { mostrarMensaje( "Esperando una conexión\n" ); conexion = servidor.acceptaccept> TERMINAR" ) );

[código] Conexiones Cliente-Servidor me mediante sockets e...

125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180

http://casidiablo.net/java-socket-chat-basico/

} // fin del método procesarConexio procesarConexion n // cerrar flujos y socket  private void  cerrarConexion() { mostrarMensaje( "\nCerrando conexión" ); establecerCampoTextoEditable( false ); // deshabilitar campoIn try {

salida.close(); entrada.close(); cliente.close(); } catch( IOException excepcionES ) {

excepcionES.printStackTrace(); } } // enviar mensaje al servidor  private void  enviarDatos( String mensaje ) { // enviar objeto al servidor try { salida.writeObject( "CLIENTE>>> " + mensaje ); salida.flush(); mostrarMensaje( "\nCLIENTE>>> " + mensaje ); } // procesar los problemas que pueden ocurrir al enviar el obje catch ( IOException excepcionES ) { areaPantalla.append( "\nError al escribir el objeto" ); } } // método utilitario que es llamado desde otros subprocesos para // areaPantalla en el subproceso despachador de eventos  private void  mostrarMensaje( final String mensajeAMostrar ) { // mostrar mensaje del subproceso de ejecución de la GUI SwingUtilities.invokeLater( new Runnable() { // clase interna para asegurar que la GUI  public void  run() // actualiza areaPantalla

{ areaPantalla.append( areaPantalla.append( mensajeAMostrar ); areaPantalla.setCaretPosition( areaPantalla.getText().length() areaPantalla.getText().length() ); } }

// fin de la clase interna

); // fin de la llamada a SwingUtilities.invokeLater SwingUtilities.invokeLater } // método utilitario que es llamado desde otros subprocesos para // campoIntroducir en el subproceso despachador de eventos

[código] Conexiones Cliente-Servidor me mediante sockets e...

181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211

http://casidiablo.net/java-socket-chat-basico/

 private void  establecerCampoTextoEditable( fina final l bool boolean ean editable

{ // mostrar mensaje del subproceso de ejecución de la GUI SwingUtilities.invokeLater( new Runnable() { // clase interna para asegurar que la GUI  public void  run()

// establece la capacidad de modifica

{ campoIntroducir.setEditable( campoIntroducir.setEditable( editable ); } }

// fin de la clase interna

); // fin de la llamada a SwingUtilities.invokeLater SwingUtilities.invokeLater }  public static void  main( String args[] )

{ JFrame.setDefaultLookAndFeelDecorated(true); Cliente aplicacion; if ( args.length == 0 ) aplicacion = new Cliente( "127.0.0.1" ); else aplicacion = new Cliente( args[ 0 ] );

aplicacion.setDefaultCloseOperation( aplicacion.setDefaultCloseOperat ion( JFrame.EXIT_ON_CL JFrame.EXIT_ON_CLOSE OSE ); aplicacion.ejecutarCliente(); } } // fin de la clase Cliente

Descargar código fuente

Los ejercicios utilizados en este post están basados en ejemplos del libro Cómo programar en Java de Deitel, y por lo tanto están bajo la licencia que esta editorial disponga. 126 Comentarios | deja el tuyo

2 enlaces entrantes [código] Uso de Datagramas en Java (Protocolo UDP) Bibliografía temática « axenedu

[código] Conexiones Cliente-Servidor me mediante sockets e...

http://casidiablo.net/java-socket-chat-basico/

124 Comentarios en “[código] Conexiones ClienteServidor mediante sockets en Java” « Comentarios anteriores 1.

 Henry dice:  julio 16, 2011 2011 a las 2:54 pm

muy bueno tu programa pero como se prodia ser un servidor muchos clientes Responder 2.

osmany dice: septiembre 15, 2011 a las 4:58 am

En la conexion del cliente, despues de confirmar que se conecto no avanza mas. Cuando “debuggeo” se queda esperando esperando por el flujo de entrada y no muestra que se recibio los flujos de E/S. que pudiera estar pasando. Responder 3.

larry dice: noviembre 28, 2011 a las 8:31 pm

buenas tardes amigo! mi prof nos ha pedido crear un hilo en este código para poder establecer la comunicación con el cliente, si me puedes ayudar te lo agradezco, te anexo los dos códigos el servidor y el cliente. servidor: package laboratorio; import java.net.*; import java.io.*; class Servicio { public void procesar(Socket Canal) throws IOException { int Num1,Num2,res = 0; String OP; DataOutputStream canal_salida_Serv = new DataOutputStream (Canal.getOutputStream()); DataInputStream DataInputStream canal_entrada_Serv = new DataInputStream DataInputStream (Canal.getInputStream()); OP = canal_entrada_Serv.readUTF(); System.out.println( System.out.println( OP ); Num1 = canal_entrada_Serv.readInt(); System.out.println( Num1 ); Num2 = canal_entrada_Serv.readInt(); System.out.println( Num2 );

[código] Conexiones Cliente-Servidor me mediante sockets e...

http://casidiablo.net/java-socket-chat-basico/

if (OP.equals(“+”) (OP.equals(“+”)){ ){ res= Num1 + Num2; } if (OP.equals(“-” (OP.equals(“-”)){ )){ res= Num1 – Num2; } if (OP.equals(“*” (OP.equals(“*”)){ )){ res= Num1 * Num2; } if (OP .equals(“/”)){ .equals(“/”)){ res= Num1 / Num2; } System.out.println( res ); canal_salida_Serv.writeInt(res); Canal.close(); } } public class servidor { public static void main( String args[] ) throws IOException { Servicio miServicio = new Servicio(); boolean hayErrores=true; ServerSocket s = (ServerSocket)null; (ServerSocket)null; Socket s1 = (Socket) null; int puerto = 30087; while (hayErrores) { hayErrores=false; try { s=new ServerSocket(puerto); ServerSocket(puerto); } catch( IOException e ) { hayErrores = true; System.out.println( System.out.println( “Error al conectar al puerto: “+e ); } } while( true ) { try { s1 = s.accept(); } catch( IOException e ) { System.out.println( System.out.println( “Error al aceptar conexión: “+e );

[código] Conexiones Cliente-Servidor me mediante sockets e...

http://casidiablo.net/java-socket-chat-basico/

} miServicio.procesar(s1); } // Fin del ciclo infinito del servidor } // Fin del método main } // Fin de la clase cliente: import java.net.*; import java.io.*; public class Cliente_Socket { public static void main( String args[] )throws IOException { Socket s=(Socket) null; DataInputStream DataInputStream canal_entrada_C; canal_entrada_C; DataOutputStream canal_salida_C; try { s = new Socket (“localhost”,33525); canal_entrada_C canal_entrada_C = new DataInputStream DataInputStream (s.getInputStream()); canal_salida_C = new DataOutputStream (s.getOutputStream()); canal_salida_C.writeUTF(“hola mundo”); System.out.println(“El System.out.println(“El Cliente dice: hola mundo”); String Resp = canal_entrada_C.readUTF(); System.out.println(“El System.out.println(“El Servidor responde: ” + Resp); s.close(); } catch( IOException e ) { System.out.println( System.out.println( “No se puede conectar al servidor: “+e ); } } // Fin del main } // Fin de la clase Cliente Responder 4.

aldemaro dice: enero 29, 2012 a las 4:04 am

gracias por el codigo man me ahorraste trabajo xD!!! Responder 5.

 Jonathan dice: enero 29, 2012 a las 4:05 am

Men un gran aporte, me ayudo bastante….! GRACIAS Responder 6.

Cristian dice:

[código] Conexiones Cliente-Servidor me mediante sockets e...

http://casidiablo.net/java-socket-chat-basico/

enero 29, 2012 a las 5:47 am No esta mal el ejemplo, pero una pequeña apreciacion…. en lugar de decir que no comentas el codigo por falta de tiempo, deberias de decir que no comentas el texto por ser de otra persona, que este ejemplo esta copiado linea por linea de la web http://www.TodoJava.com.. No hacer codigo de terceros como propios porfavor, o http://www.TodoJava.com almenos pon una simple nota de agradecimiento a su creador Responder Cristian dice: enero 29, 2012 a las 10:46 am

¿Y qué? Así no sea mío pues también puedo decir que no lo comento por falta de tiempo. ¿O crees que no entiendo un código tan trivial? Por cierto, no es de TodoJava.com, es del libro de Deitel como dice en el cuadro azul abajo de la entrada.  Antes de criticar criticar,, lee (pero no en Internet que que es una cloaca virtual, virtual, sino en libros), infórmate, analiza, etc. Responder 7.

 Lucrecia dice: marzo 8, 2012 a las 4:04 am

Hola me parece muy buen codigo, yo quisiera saber como podria hacerse este chat para varias personas y con hilos Responder 8.

 AmilcarJC dice: marzo 8, 2012 a las 4:13 am

Q Excelente tu codigo men, me recomendaron esta pagina y la verdad le entendi a eso de sockets y estoy investigando como hacerlo para varios clientes. Se te agradece el aporte Responder 9.

Claudia Elena dice: marzo 14, 2012 a las 12:31 pm

hola oye el codigo que pusiste en que programa lo hiciste lo podre corren en crimson?? Responder 10.

 LEONARDO dice: mayo 2, 2012 a las 4:01 pm

[código] Conexiones Cliente-Servidor me mediante sockets e...

http://casidiablo.net/java-socket-chat-basico/

ESTE SOCKET USA TCP O UDP GRACIAS Responder « Comentarios anteriores

¡Déjanos tu comentario! Tu nombre

Homepage Gravatar)) E-mail (para Gravatar

Tu comentario

Enviar comentario

2006 - 2010 casidiablo.net. Pocos derechos reservados.

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF