viernes, 26 de junio de 2015

ejemplo como usar el protocolo UDP



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