Conexiones de clientes y servidores usando java

Solo disponible en BuenasTareas
  • Páginas : 8 (1877 palabras )
  • Descarga(s) : 0
  • Publicado : 9 de octubre de 2010
Leer documento completo
Vista previa del texto
Conexiones Cliente-Servidor mediante sockets en Java
cerrarAutor: Cristian Email: cristian@elhacker.net
Web: http://casidiablo.net
Twitter: casidiablolinux
Acerca de Cristian: Soy un estudiante de Ingeniería de sistemas; me encanta la programación; soy un apasionado por Gnu/Linux (en especial Gentoo Linux).Ver entradas del autor (812)
Por falta de tiempo me es imposible explicar este códigodetalladamente, tal como me gustaría, pero no tengo otra opción que simplemente ponerlo. Aún así es de recordar que pueden dejar todos los comentarios que deseen, con sus dudas y sugerencias (que no pedidos de tareas).
Aún así explico un poco el resultado del programa... el programa es un chat 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.
El resultado

 

El código de socket en java
El código fuente de Servidor.java:
view source
print?
001.import java.io.*;
002.import java.net.*;
003.import java.awt.*;
004.import java.awt.event.*;
005.import javax.swing.*;
006. 007.public class Servidor extends JFrame {
008.   private JTextField campoIntroducir;
009.   private JTextArea areaPantalla;
010.   private ObjectOutputStream salida;
011.   private ObjectInputStream entrada;
012.   private ServerSocket servidor;
013.   private Socket conexion;
014.   private int contador = 1;
015. 
016.   // configurar GUI
017.   public Servidor()
018.   {
019.      super("Servidor" );
020. 
021.      Container contenedor = getContentPane();
022. 
023.      // crear campoIntroducir y registrar componente de escucha
024.      campoIntroducir = new JTextField();
025.      campoIntroducir.setEditable( false );
026.      campoIntroducir.addActionListener(
027.         new ActionListener() {
028. 
029.            // enviar mensaje al cliente030.            public void actionPerformed( ActionEvent evento )
031.            {
032.               enviarDatos( evento.getActionCommand() );
033.               campoIntroducir.setText( "" );
034.            }
035.         }
036.      );
037. 
038.      contenedor.add( campoIntroducir, BorderLayout.NORTH );
039. 
040.      // crear areaPantalla
041.      areaPantalla = new JTextArea();042.      contenedor.add( new JScrollPane( areaPantalla ),
043.         BorderLayout.CENTER );
044. 
045.      setSize( 300, 150 );
046.      setVisible( true );
047. 
048.   } // fin del constructor de Servidor
049. 
050.   // configurar y ejecutar el servidor
051.   public void ejecutarServidor()
052.   {
053.      // configurar servidor para que reciba conexiones; procesar las conexiones
054.      try {
055. 056.         // Paso 1: crear un objeto ServerSocket.
057.         servidor = new ServerSocket( 12345, 100 );
058. 
059.         while ( true ) {
060. 
061.            try {
062.               esperarConexion(); // Paso 2: esperar una conexión.
063.               obtenerFlujos();        // Paso 3: obtener flujos de entrada y salida.
064.               procesarConexion(); // Paso 4:procesar la conexión.
065.            }
066. 
067.            // procesar excepción EOFException cuando el cliente cierre la conexión
068.            catch ( EOFException excepcionEOF ) {
069.               System.err.println( "El servidor terminó la conexión" );
070.            }
071. 
072.            finally {
073.               cerrarConexion();   // Paso 5: cerrar la conexión.074.               ++contador;
075.            }
076. 
077.         } // fin de instrucción while
078. 
079.      } // fin del bloque try
080. 
081.      // procesar problemas con E/S
082.      catch ( IOException excepcionES ) {
083.         excepcionES.printStackTrace();
084.      }
085. 
086.   } // fin del método ejecutarServidor
087. 
088.   // esperar que la conexión...
tracking img