0

给定一个字符串形式的 IPv4 地址(例如“10.171.24.69”)和一个网络掩码(例如“255.255.255.128”或“25”表示网络部分的位数)我需要计算广播地址,这可能是通过将主机部分中的位清零或置一(取决于我可以通过 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 回答