0

文字列の形式のIPv4アドレス(例: "10.171.24.69")とネットマスク(例:ネットワーク部分のビット数の場合は"255.255.255.128"または"25")を指定すると、ブロードキャストアドレスを計算する必要があります。これは、ホスト部分のビットをゼロまたは1にすることによって行うことができます(WMIを介してクエリできるIPUseZeroBroadcastプロパティによって異なります)。

System.Net.IPAddressクラスを調べていますが、タスクには不十分に見えます。助言がありますか?

4

1 に答える 1

3

組み込みの関数はわかりませんが、自分で簡単に計算できます。

static IPAddress ComputeBroadcastIP(IPAddress ip, IPAddress netmask)
{
    byte[] ipBytes = ip.GetAddressBytes();
    byte[] maskBytes = netmask.GetAddressBytes();
    byte[] broadcastBytes = new byte[ipBytes.Length];

    for (int i = 0; i < broadcastBytes.Length; i++)
    {
        broadcastBytes[i] = (byte)(ipBytes[i] | ~maskBytes[i]);
    }

    return new IPAddress(broadcastBytes);
}

あなたもすることができます

IPAddress broadcast = new IPAddress((ip.Address | (~mask.Address)) & 0xffffffff);

ただし、この.Addressプロパティは非推奨です。

「1.2.3.4」のような文字列をに変換するには、たとえばIPAddress、を呼び出すことができます。IPAddress.Parse

IPAddress foo = IPAddress.Parse("1.2.3.4");
于 2009-06-30T23:02:03.660 に答える