2011-09-20 17 views
5

Sto provando a inviare una trasmissione UDP sull'indirizzo IP "255.255.255.255" per il rilevamento dei dispositivi nella mia rete. Il programma viene eseguito, ma non vedo nulla in Wireshark. quando cambio l'indirizzo IP su un IP noto nella mia rete, posso vedere i pacchetti in Wireshark. cosa sta succedendo ?La trasmissione UDP su Java non funziona

Questo è il mio codice:

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"); 
    } 


} 

risposta

4

OK, ho trovato una risposta. Windows 7 non supporta più le trasmissioni 255.255.255.255, apparentemente era un'apertura a varie minacce. Per trasmettere, è necessario utilizzare un approccio diverso.

Questo è un piccolo explenation da Wikipedia:

L'indirizzo di broadcast per un host IPv4 può essere ottenuto eseguendo un bit per bit OR logico tra il complemento bit della maschera di sottorete e l'indirizzo IP dell'host. Esempio: per trasmettere un pacchetto a un'intera subnet IPv4 utilizzando lo spazio indirizzo IP privato 100.16.0.0/12, che ha la subnet mask 255.240.0.0, l'indirizzo di broadcast è: 100.16.0.0 | 0.15.255.255 = 100.31.255.255.

Una definizione speciale esiste per l'indirizzo di trasmissione IP 255.255.255.255. È l'indirizzo di broadcast della rete zero o 0.0.0.0, che negli standard del protocollo Internet sta per questa rete, cioè la rete locale. La trasmissione a questo indirizzo è limitata per definizione, in quanto non viene mai inoltrata dai router che collegano la rete locale a Internet.

Problemi correlati