在C#中操作IPv4地址的功能?

时间:2009-06-30 22:42:39

标签: c# string network-programming ipv4

给定一个字符串形式的IPv4地址(例如“10.171.24.69”)和一个网络掩码(例如“255.255.255.128”或“25”表示网络部分的位数)我需要计算广播地址,可以通过归零或归零主机部分中的位(取决于我可以通过WMI查询的IPUseZeroBroadcast属性)。

我正在检查System.Net.IPAddress类,但它看起来不足以完成任务。有什么建议吗?

1 个答案:

答案 0 :(得分: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");