在C#中确定IPv4子网掩码

2 .net ipv4 subnet windows-server-2008 c#-4.0

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

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

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

aKz*_*enT 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();
    }
Run Code Online (Sandbox Code Playgroud)

如果使用子网(例如28)调用它,它将以字符串形式返回子网(255.255.255.240).

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