lunes, julio 26, 2021

Ejemplo básico de Socket en Java

Deberías leer

Antonio García Pratshttp://antoniogarciaprats.eu/
Estudios de Licenciatura en CC Quimicas e Ingeniería Técnica en Informática de Gestión por la Universidad de Jaén. Social Media autodidacta. Siempre en búsqueda de nuevos retos que proporcionen algún sentido a mi existencia.

De una manera muy básica podríamos definir los socket en Java como un sistema de comunicación entre procesos ubicados en diferentes máquinas. Mi objetivo en esta publicación será mostrar un ejemplo muy sencillo de como programar un socket en Java que ilustre su funcionamiento.

Normalmente trabajo tanto con Eclipse como con Netbeans. En particular, en éste ejemplo lo realizaré en el último IDE citado. Trabajaremos con una parte cliente que enviará datos a un servidor, quien los recepcionará y mostrará en pantalla. Vamos a iniciar, sin más demora, nuestro trabajo creando un proyecto MAVEN. A continuación crearemos dos JPANEL FORM a los que llamaremos respectivamente cliente y servidor.

Cliente

En la parte cliente, crearemos en la parte de diseño un pequeño formulario compuesto por una label que rotulará la aplicación con el texto: CLIENTE, un Edittext en el que escribiremos los mensajes de texto que vamos a enviar al servidor (nuestras peticiones) y un botón con el que aceptaremos la petición y la enviaremos al servidor para que sea procesada.

Tras esto, escribiremos las siguientes líneas de código que, a continuación explicaremos:

try {


   Socket socket = new Socket ( "192.168.1.39", 9999 );
   DataOutputStream data = new DataOutputStream ( socket.getOutputStream ());
   data.writeUTF (txt_mensaje.getText());

   socket.close ();

} catch ( Exception e ) {
    System.out.print ( e );
}

Creamos un nuevo objeto Socket al que pasaremos como parámetros la dirección Ip de la máquina a la que vamos a enviarle el mensaje y el puerto al que nos vamos a conectar. A continuación creamos un objeto DataOutputStream. Una vez hecho, llamaremos al procedimiento writeUTF, pasándole como argumento el mensaje que queremos enviar. Terminado este proceso, cerramos el socket.

Servidor

El código del servidor nos llevará un poco más de trabajo, aunque no demasiado. Primero debemos agregar a la clase un implements Runnable, puesto que vamos a crear un hilo. En el constructor agregaremos las líneas:

Thread hilo = new Thread (this);
hilo.start ();

Se nos creará un procedimiento sobre escrito en el que insertaremos las siguientes líneas de código:

try {
            
	ServerSocket server = new ServerSocket (9999);
            
        while ( true ) {
        	Socket misocket = server.accept();
                DataInputStream data = new DataInputStream (misocket.getInputStream());
                
                String mensajes = data.readUTF(); 
                campo.append ("\n" + mensajes);
	}
            
            
} catch ( Exception e ) {
	System.out.println (e);
}

Crearemos un objeto ServerSocket que llevará como argumento el puerto al que se va a conectar el cliente. A continuación, en un bucle infinito,  crearemos un objeto Socket, que llame al procedimiento accept. Crearemos un objeto DataInputStream que se encargará de leer los mensajes que le vayan llegando del cliente y los irá visualizando en la ventana del servidor.

El resultado deberá tener el aspecto de la siguiente imagen:

resultado de ejecutar el programa que muestra el funcionamiento de los socket

Como siempre, el proyecto, lo subiré a mi cuenta personal de github para los que deseen descargarselo y correrlo en su propia computadora.

- Advertisement -spot_img

Más publicaciones

Dejar respuesta

Please enter your comment!
Please enter your name here

- Advertisement -spot_img

Últimas publicaciones