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.
>
>