Re: udp broadcast

GarZa <[email protected]> Wed, 04 Nov 2009 23:37:03 +0100
Newsgroups gmane.comp.java.javaspain
Message-ID <[email protected]>
Ya lo he solucionado, tenía levantado iptables, "pa matarme" ...

Un Saludo.

GarZa escribió:
> Hola, estoy haciendo un programa de mensajería y necesito hacer un 
> broadcast, enviar un mensaje a todos los equipos, después de infinidad 
> de pruebas y busquedas por google no lo consigo, me aparece el 
> siguiente error:
>
> java.io.IOException: Operation not permitted
>        at java.net.PlainDatagramSocketImpl.send(Native Method)
>        at java.net.DatagramSocket.send(DatagramSocket.java:616)
>
> Pego un sencillo ejemplo para cliente y servidor por si alguien puede 
> darme alguna pista:
>
>    public ClienteUdp() {
>        try {
>                  // Mensaje a enviar
>            String msg = "Hola";
>            byte[] msgtoBytes = new byte[4];
>            msgtoBytes=msg.getBytes();
>
>            //Dirección IP Servidor UDP
>            InetAddress direccion = InetAddress.getByName("10.1.1.255");
>                      //Dirección (broadcast) y puerto servidor.
>            DatagramPacket dp = new DatagramPacket(msgtoBytes,
>                    msgtoBytes.length, direccion, 3000);
>                      DatagramSocket socket= new DatagramSocket();
>                      socket.setBroadcast(true);
>            socket.send(dp);
>                      socket.close();
>          
>        } catch (Exception e) {
>                e.printStackTrace();
>        }
>    }
>
>      public ServidorUdp() {
>        try {
>
>            // direccion ip del interfaz de red
>            InetAddress direccion = InetAddress.getLocalHost();
>            int puerto = 3000;
>            DatagramSocket socket = new DatagramSocket(puerto, direccion);
>                      byte[] buffer = new byte[4];
>            // Un DatagramPacket para recibir los mensajes.
>            DatagramPacket dato = new DatagramPacket(buffer, 
> buffer.length);
>
>            System.out.println("Iniciando servidor UDP...");
>            // Bucle infinito.
>            while (true) {
>                // Se recibe un dato y se escribe en pantalla.
>                socket.receive(dato);
>                System.out.print("Recibido dato de "
>                        + dato.getAddress().getHostName() + " : ");
>                              // Conversion de los bytes a String
>                String msg = new String(dato.getData());
>                System.out.println(msg);
>            }
>        } catch (Exception e) {
>            e.printStackTrace();
>        }
>    }
>
> Saludos.
>
>