2011-09-20 9 views
5

私のネットワークでデバイスの検出用にIPアドレス "255.255.255.255"でUDPブロードキャストを送信しようとしています。プログラムは実行されますが、Wiresharkでは何も表示されません。 IPアドレスをネットワーク上の既知のIPに変更すると、Wiresharkでそのパケットを見ることができます。どうしたの ?JavaでのUDPブロードキャストが機能しません

これは私のコードです:

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


} 

答えて

4

OK、私は答えを見つけました。 Windows 7は255.255.255.255のブロードキャストをサポートしていません。明らかに、これはさまざまな脅威につながっています。ブロードキャストするには、別の方法を使用する必要があります。 IPv4ホストのブロードキャストアドレスは、サブネットマスクとホストのIPアドレスのビットの補数の間の論理ビット単位のOR演算を行うことによって得ることができる

これはウィキペディアから小さなexplenationあります。 例:サブネットマスク255.240.0.0を持つプライベートIPアドレススペース100.16.0.0/12を使用してIPv4サブネット全体にパケットをブロードキャストするには、ブロードキャストアドレスは100.16.0.0です。 0.15.255.255 = 100.31.255.255。

IPブロードキャストアドレス255.255.255.255には特別な定義があります。これはゼロネットワークまたは0.0.0.0のブロードキャストアドレスであり、インターネットプロトコル標準ではこのネットワーク、すなわちローカルネットワークを表す。このアドレスへの送信は、ローカルネットワークをインターネットに接続するルータによって決して転送されないという点で、定義によって制限されています。

関連する問題