【问题标题】:Show Preferred DNS and Alternate DNS on a label在标签上显示首选 DNS 和备用 DNS
【发布时间】:2014-09-16 21:49:09
【问题描述】:

我希望能够通过标签显示当前首选 DNS 和备用 DNS 是什么。

我该怎么做?

我已经研究过了,看来我必须使用

管理对象搜索器?使用 WMI?

类似的东西?

ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_NetworkAdapter Where AdapterType='DnsForestName'");
foreach (ManagementObject mo in mos.Get())
{
    label1.Text = mos.ToString();
}

【问题讨论】:

  • 您是否关心获得 DNS 地址的连接,例如有线还是 WiFi?
  • 是的,我想要首选 DNS 或备用 DNS
  • 假设运行代码的机器只有一个网络接口是否安全?如果可以有多个网络接口,第一个问题是,您选择正确网络接口的标准是什么?
  • 是的,只有 1 个网络接口,但如果确实有两个,请选择本地连接。

标签: c# dns network-interface


【解决方案1】:

您可能想查看以下内容 - IPInterfaceProperties.DnsAddresses 属性

http://msdn.microsoft.com/en-us/library/system.net.networkinformation.ipinterfaceproperties.dnsaddresses(v=vs.110).aspx

文档中有一个很好的示例,说明了如何枚举所有网络接口及其 DNS IP 地址。但就像我在对您的问题的评论中所说的那样。如果您有多个网络接口,则必须定义选择您感兴趣的标准..

请注意,我不能 100% 确定此属性返回 DnsAddresses 的顺序是主要 Dns,然后是 0 个或更多次要的 Dns。我猜是这种情况,但没有我知道的文档,这将证实这一假设。

【讨论】:

    【解决方案2】:

    我可以用这段代码做我想做的事。

        private void Form1_Load(object sender, EventArgs e)
        {
            NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface adapter in adapters)
            {
    
                IPInterfaceProperties adapterProperties = adapter.GetIPProperties();
                IPAddressCollection dnsServers = adapterProperties.DnsAddresses;
                if (dnsServers.Count > 0)
                {
                    Console.WriteLine(adapter.Description);
                    foreach (IPAddress dns in dnsServers)
                    {
                        label4.Text = dns.ToString();
                    }
    
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      • 1970-01-01
      相关资源
      最近更新 更多