udp broadcast

GarZa <[email protected]> Wed, 04 Nov 2009 19:56:40 +0100
Newsgroups gmane.comp.java.javaspain
Message-ID <[email protected]>
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.