6

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

これは私のコードです:

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

1 に答える 1

5

OK、答えが見つかりました。Windows 7 は 255.255.255.255 ブロードキャストをサポートしなくなりました。明らかに、さまざまな脅威への入り口でした。ブロードキャストするには、別のアプローチを使用する必要があります。

これは、ウィキペディアからの小さな説明です。

IPv4 ホストのブロードキャスト アドレスは、サブネット マスクのビット補数とホストの IP アドレスとの間でビットごとの論理 OR 演算を実行することによって取得できます。例: サブネット マスク 255.240.0.0 を持つプライベート IP アドレス空間 100.16.0.0/12 を使用して、IPv4 サブネット全体にパケットをブロードキャストするには、ブロードキャスト アドレスは次のとおりです。0.15.255.255 = 100.31.255.255.

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

于 2011-09-27T08:04:41.197 に答える