2011-09-20 15 views
5

Estoy tratando de enviar una transmisión UDP en la dirección IP "255.255.255.255" para el descubrimiento de dispositivos en mi red. El programa se ejecuta, pero no veo nada en Wireshark. cuando cambio la dirección IP a una IP conocida en mi red, puedo ver los paquetes en Wireshark. que esta pasando ?Transmisión UDP en Java no funciona

Este es mi código:

public static void main(String args[]) throws Exception 
{ 
    String Broadcastaddress = new String("255.255.255.255"); 
    int port = 9876; 
    DatagramSocket serverSocket = new DatagramSocket(); 
    serverSocket.setBroadcast(true); 
    InetAddress IPAddress = InetAddress.getByName(Broadcastaddress); 
    System.out.println("Sending Discovery message to " + IPAddress + "Via UDP port " + port); 

    byte[] sendData = new byte[4]; 
    sendData[0] = 'F'; 
    sendData[1] = 'I'; 
    sendData[2] = 'N'; 
    sendData[3] = 'D'; 

    DatagramPacket sendPacket = new DatagramPacket(sendData,sendData.length,IPAddress,port); 

    while (true) 
    { 
     serverSocket.send(sendPacket); 
     System.out.println("Packet sent"); 
    } 


} 

Respuesta

4

Bueno, he encontrado una respuesta. Windows 7 ya no es compatible con las transmisiones 255.255.255.255, aparentemente fue una apertura a varias amenazas. Para transmitir, uno necesita usar un enfoque diferente.

Esta es una pequeña explicación necesaria de Wikipedia:

La dirección de difusión para un host IPv4 se puede obtener mediante la realización de un bit a bit operación lógica OR entre el complemento de bits de la máscara de subred y la dirección IP del anfitrión. Ejemplo: para transmitir un paquete a una subred IPv4 completa utilizando el espacio de direcciones IP privadas 100.16.0.0/12, que tiene la máscara de subred 255.240.0.0, la dirección de difusión es: 100.16.0.0 | 0.15.255.255 = 100.31.255.255.

Existe una definición especial para la dirección de difusión IP 255.255.255.255. Es la dirección de difusión de la red cero o 0.0.0.0, que en los estándares de Protocolo de Internet representa esta red, es decir, la red local. La transmisión a esta dirección está limitada por definición, ya que nunca es enviada por los enrutadores que conectan la red local a Internet.