【问题标题】:Determine IPv4 Subnet Mask in C#在 C# 中确定 IPv4 子网掩码
【发布时间】:2012-04-14 03:33:16
【问题描述】:

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

我过去一直为此使用网络计算器,但是我正在尝试弄清楚如何在 C# 中以编程方式进行。我发现了这篇文章HERE,这很有意义(从中学到了一点),但有点令人困惑。我过去使用的计算器为我提供了 255.255.255.240 或 .248 之类的子网掩码,因为这似乎只返回四个值之一。

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

【问题讨论】:

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


    【解决方案1】:

    您提到的链接为您提供了不同 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) 的形式返回子网。

    告诉我这是你需要的还是有其他的。

    【讨论】:

    • 这正是我想要的!非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2018-04-03
    • 2013-06-11
    • 2020-09-05
    • 2010-09-21
    • 1970-01-01
    相关资源
    最近更新 更多