udp broadcast

View: New views
2 Messages — Rating Filter:   Alert me  

udp broadcast

by GarZa-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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.


Re: udp broadcast

by GarZa-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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