Creación de una aplicación servidor-cliente utilizando las clases DatagramPacket y DatagramSocket

Para crear una aplicación que utilice UDP para establecer la conexión entre un cliente y un servidor, debemos realizar los siguientes pasos:

  • Crear un programa de servidor
  • Crear un programa de cliente
  • Ejecutar el programa cliente y servidor.

Realicemos los pasos en las siguientes subsecciones:

Crear el programa del servidor 

Vamos a crear la clase de servidor, denominada UDPServerEx, que toma los mensajes de un usuario y los envía (datagramas) a los clientes. El Listado 1 muestra el código del archivo UDPServerEx.java

Nombre de archivo: UDPServerEx.java

Java

// A server that sends messages to the client
 
import java.net.*;
 
class UDPServerEx {
 
    public static DatagramSocket mySocket;
    public static byte myBuffer[] = new byte[2000];
 
    public static void serverMethod() throws Exception
    {
        int position = 0;
        while (true) {
            int charData = System.in.read();
            switch (charData) {
            case -1:
                System.out.println(
                    "The execution of "
                    + "the server has been terminated");
                return;
            case '\r':
                break;
            case '\n':
                mySocket.send(
                    new DatagramPacket(
                        myBuffer,
                        position,
                        InetAddress.getLocalHost(),
                        777));
                position = 0;
                break;
            default:
                myBuffer[position++]
                    = (byte)charData;
            }
        }
    }
    public static void main(String args[]) throws Exception
    {
        System.out.println("Please enter some text here");
        mySocket = new DatagramSocket(888);
        serverMethod();
    }
}

Para compilar el archivo UDPServerEx.java: 

D:\UDPExample>javac UDPServerEx.java

Nota: La ruta puede variar según el lugar donde guarde el archivo.

Creando el Programa Cliente 

Vamos a crear una clase de cliente, llamada UDPClient, que acepte los mensajes enviados desde el servidor, clase UDPServerEx. Luego, el cliente muestra los mensajes recibidos en el símbolo del sistema. El Listado 2 muestra el código del archivo UDPClient.java

Nombre de archivo: UDPClient.java 

Java

// UDPClient that receives and
// displays messages sent from the server
 
import java.net.*;
class UDPClient {
 
    public static DatagramSocket mySocket;
    public static byte myBuffer[] = new byte[2000];
 
    public static void clientMethod() throws Exception
    {
        while (true) {
            DatagramPacket dataPacket
                = new DatagramPacket(myBuffer,
                                     myBuffer.length);
            mySocket.receive(dataPacket);
            System.out.println("Message Received :");
            System.out.println(
                new String(
                    dataPacket.getData(),
                    0,
                    dataPacket.getLength()));
        }
    }
    public static void main(String args[]) throws Exception
    {
        System.out.println(
            "You need to press CTRL+C"
            + " in order to quit.");
        mySocket = new DatagramSocket(777);
        clientMethod();
    }
}

Use el siguiente comando para compilar el archivo UDPClient.java: 

D:\UDPExample>javac UDPClient.java

Producción 

Nota: Para ejecutar las clases UDPServerEx y UDPClient, ejecute UDPServerEx.java y UDPClient.java en dos ventanas del símbolo del sistema separadas. Recuerde, la clase UDPServerEx se ejecuta antes que la clase UDPClient. La Figura 1 muestra el resultado de los archivos UDP Server java y UDPClient.java:

Mostrar la salida de las clases UDPServerEx y UDPClient

Publicación traducida automáticamente

Artículo escrito por aashrut123 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *