jueves, 2 de julio de 2015

Código de ejemplo (Java)

El siguiente ejemplo muestra cómo usar el protocolo UDP para una comunicación cliente/servidor:

Servidor:
public static void main(String[] args) {

  try {
   System.out.println("server creado........");
   // 1. crear el servidor..
   DatagramSocket socket = new DatagramSocket(45000);

   // 2. recibir mensaje desde el cliente...

   // 2.1 crear el paquete donde se recibe el mensaje.
   byte[] buffer = new byte[1024];
   DatagramPacket paqueteCliente = new DatagramPacket(buffer, 1024);
   // 2.2 recibir el paquete. operacion bloqueante.
   System.out.println("socket esperando....");
   socket.receive(paqueteCliente);

   // 2.3 leer el paquete como string...
   String msj = new String(paqueteCliente.getData());

   System.out.println("desde "
     + paqueteCliente.getAddress().getHostAddress()
     + " desde el puerto " + paqueteCliente.getPort()
     + " se recibio:" + msj);

   // 3. enviar respuesta..
   String resp = new Date().toString();// la hora como respuesta.
   // 3.1 crear datagrama de envio.
   // direccion destino..
   InetAddress addr = paqueteCliente.getAddress();// la misma del
            // cliente.
   int port = paqueteCliente.getPort();
   // el datagrama contiene la información del destino.
   DatagramPacket paqueteEnvio = new DatagramPacket(resp.getBytes(),
     resp.length(), addr, port);
   System.out.println("enviando:"+new String(paqueteEnvio.getData()));
   // 3.2 enviar paquete...
   socket.send(paqueteEnvio);
   
   //4. cerrar el socket...
   socket.close();

  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 }
Cliente:
public static void main(String[] args) {
  try {

   // 1. crear el socket por donde se enviara la peticion y se recibira
   // la respuesta..
   DatagramSocket socket = new DatagramSocket(32000);

   // 2. crear datagrama para enviar la info. el datagrama contiene
   // toda la info necesaria para que llegue el msj
   String msj = "Hola Server....."; // msj a enviar.
   String ip = "127.0.0.1";
   int port = 45000;
   // 2.1 crear datagrama
   DatagramPacket paqueteEnvio = new DatagramPacket(msj.getBytes(),
     msj.length(), InetAddress.getByName(ip), port);
   // 2.2 enviar paquete.
   socket.send(paqueteEnvio);

   // 3. recibir respuesta...

   // 3.1 crear datagrama de recepcion.
   byte[] resp = new byte[1024];
   DatagramPacket paqueteRecibido = new DatagramPacket(resp,
     resp.length);

   // 3.2 recibir paquete.
   socket.receive(paqueteRecibido);

   // 4. mostrar info...
   System.out.println("Server respondio desde "
     + paqueteRecibido.getAddress().getHostAddress()
     + " por el puerto " + paqueteRecibido.getPort()
     + " se recibio:" + new String(paqueteRecibido.getData()));

   // 5. cerrar
   socket.close();

  } catch (IOException e) {
   e.printStackTrace();
  }





No hay comentarios:

Publicar un comentario