在C#中确定IPv4子网掩码

时间:2012-03-30 12:40:26

标签: .net c#-4.0 windows-server-2008 ipv4 subnet

由于我必须设置很多Windows Server机器,所以我决定在C#中编写一个小程序来帮助简化其中的一些任务。我必须添加的最后一个是能够输入IP范围(例如74.117.238.112/28)并让它自动将所有这些作为静态IP添加到NIC。

我过去总是使用网络计算器,但是我试图弄清楚如何在C#中以编程方式进行。我发现了这个写HERE,这很有意义(从中学到了一些东西),但有点令人困惑。我过去使用的计算器向我提供了像255.255.255.240或.248这样的子网掩码,因为这只会返回四个值中的一个。

此代码示例是否正确,还是需要进一步修改才能实际使用?

1 个答案:

答案 0 :(得分:5)

您提到的链接为您提供了不同IP类的标准子网掩码。这不是真正的子网划分。

如果我理解正确,您只需要子网掩码,该子网掩码仅取决于子网(在您的示例中为/ 28),而不是IP地址。

我写了这个小函数::

    public static string GetSubnetMask(byte subnet)
    {
        long mask = (0xffffffffL << (32-subnet)) & 0xffffffffL;
        mask=IPAddress.HostToNetworkOrder((int)mask);
        return new IPAddress((UInt32)mask).ToString();
    }

如果您使用子网(例如28)进行呼叫,则会将子网作为字符串返回(255.255.255.240)。

告诉我这是否是你需要的或者还有什么。