【问题标题】:Finding the subnet mask of your local PC查找本地 PC 的子网掩码
【发布时间】:2015-03-06 12:48:18
【问题描述】:

我在尝试从本地 PC 获取一些子网信息时遇到了一些困难。此代码“技术上”运行良好,因为它不包含警告或错误,但是当应用程序运行时,返回的只是“0.0.0.0”我的应用程序中有其他非常相似的代码请求 IP 地址、默认网关等。这工作得很好,所以我现在不知道为什么这没有返回子网掩码。任何帮助,将不胜感激!是否有一些非常明显的东西我错过了,这就是为什么这不起作用?

        NetworkInterface[] subnetInterface = NetworkInterface.GetAllNetworkInterfaces();
        foreach (NetworkInterface subnetMask in subnetInterface)
        {
            UnicastIPAddressInformationCollection UnicastIPInfoCol = subnetMask.GetIPProperties().UnicastAddresses;
            foreach (UnicastIPAddressInformation UnicatIPInfo in UnicastIPInfoCol)
            {
                subnetMaskLabel.Content = UnicatIPInfo.IPv4Mask;

            }

我有 3 个网络适配器、2 个 VMWare 目前已为此应用程序禁用,还有 1 个本地连接已启用,以便应用程序仅查看该连接。

更新 我试图解决获取“255.0.0.0”的问题但没有成功。当我在应用程序中放置断点时,当信息在“subnetMaskLabel.Content = UnicatIPInfo.IPv4Mask;”中传递时语法存储的值是正确的子网掩码,但是它显示的子网掩码不正确,有什么想法可以解决这个问题吗?

【问题讨论】:

  • 谢谢 Mitz,我会重新检查这些链接以确保我没有做错任何事情,但是我已经尝试过它们,但仍然遇到同样的问题。

标签: c# ip subnet


【解决方案1】:

您可能正在查看非 ipv4 地址。试试这个网络地址:

    public static void GetSubnetMask()
    {
        foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces())
        {
            foreach (UnicastIPAddressInformation unicastIPAddressInformation in adapter.GetIPProperties().UnicastAddresses)
            {
                if (unicastIPAddressInformation.Address.AddressFamily == AddressFamily.InterNetwork)
                {
                    Console.WriteLine(unicastIPAddressInformation.IPv4Mask);
                }
            }
        }
    }

【讨论】:

  • 谢谢!我们已经取得了进展,但现在只是“255.0.0.0”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-11
  • 2013-10-10
  • 1970-01-01
  • 2015-10-18
  • 1970-01-01
相关资源
最近更新 更多