Sockets

Sockets en Java

La tecnologia de los Sockets nos permite establecer un enlace entre dos programas que se ejecutan independientes el uno del otro (generalmente un programa cliente y un programa servidor) Java por medio de la librería java.net nos provee dos clases: Socket para implementar la conexión desde el lado del cliente y ServerSocket que nos permitirá manipular la conexión desde el lado del servidor.
Mensajes entre cliente y servidor

Ejemplo Cliente/Servidor usando sockets en Java

A continuación el código fuente realizado en Java del cliente donde se conecta con el servidor y le envía un mensaje:

package com.programacionextrema;
import java.io.*;
import java.net.*;
public class Cliente {
    private static String HOST = "localhost";
    private static int PUERTO = 2017;
    public static void main(String args[]) {
         
        Socket socket;
        DataOutputStream mensaje;
         
        try {
            //Creamos nuestro socket
            socket = new Socket(HOST, PUERTO);
     
            mensaje = new DataOutputStream(socket.getOutputStream());
            //Enviamos un mensaje
            mensaje.writeUTF("Hola soy un cliente!!");
            //Cerramos la conexión
            socket.close();
        } catch (UnknownHostException e) {
            System.out.println("El host no existe o no está activo.");
        } catch (IOException e) {
            System.out.println("Error de entrada/salida.");
        }
         
    }
}

Ahora el código del servidor:

package com.programacionextrema;
import java.io.*;
import java.net.*;
public class Servidor {
    private static int PUERTO = 2017;
    public static void main(String args[]) {
         
        BufferedReader entrada;
        DataOutputStream salida;
        Socket socket;
        ServerSocket serverSocket;
         
        try {
            serverSocket = new ServerSocket(PUERTO);
            System.out.println("Esperando una conexión...");
            socket = serverSocket.accept();
            System.out.println("Un cliente se ha conectado...");
            // Para los canales de entrada y salida de datos
            entrada = new BufferedReader(new InputStreamReader(
                    socket.getInputStream()));
            salida = new DataOutputStream(socket.getOutputStream());
            System.out.println("Confirmando conexion al cliente....");
            salida.writeUTF("Conexión exitosa...");
            // Para recibir el mensaje
            String mensajeRecibido = entrada.readLine();
            System.out.println(mensajeRecibido);
            salida.writeUTF("Se recibio tu mensaje.");
            salida.writeUTF("Gracias por conectarte.");
            System.out.println("Cerrando conexión...");
            // Cerrando la conexón
            serverSocket.close();
        } catch (IOException e) {
            System.out.println("Error de entrada/salida."  + e.getMessage());
        }
    }
}

Bueno, esto es todo lo que se tiene que saber a la hora de usar sockets en Java, les recomiendo leer también el artículo que habla de hilos o thread en java ya que con estos dos conceptos se pueden realizar muchas cosas interesantes, como por ejemplo un chat.

Comentarios

Entradas populares