问题 如何在C#中获取当前的DNS服务器?


如何在C#中获取当前的DNS服务器?


9341
2018-05-25 16:55


起源

您的意思是本地计算机的DNS服务器,域名的DNS服务器还是其他什么?对于什么是“您的DNS服务器”,IMO有许多不同的答案。 - JB King
我正在考虑将执行Mx Record查找的不安全代码转换为安全版本。看到: stackoverflow.com/questions/2906615/... - Greg ''Wildman'' Finzer
我想知道的是如何在不必指定dns服务器名称的情况下执行DNS查找,即让系统使用默认值。这是在您在某处键入URL时发生的情况,因此不确定为什么DNS类不能允许默认值。 - Brady Moritz


答案:


请参阅MSDN IPInterfaceProperties.DnsAddresses 用于示例代码。


13
2018-05-25 17:00





我最近试图做同样的事情并发现了这一点 很好的例子 罗伯特辛达尔。

using System;
using System.Net;
using System.Net.NetworkInformation;

namespace HowToGetLocalDnsServerAddressConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(GetDnsAdress());
            Console.ReadKey();
        }

        private static IPAddress GetDnsAdress()
        {
            NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();

            foreach (NetworkInterface networkInterface in networkInterfaces)
            {
                if (networkInterface.OperationalStatus == OperationalStatus.Up)
                {
                    IPInterfaceProperties ipProperties = networkInterface.GetIPProperties();
                    IPAddressCollection dnsAddresses = ipProperties.DnsAddresses;

                    foreach (IPAddress dnsAdress in dnsAddresses)
                    {
                        return dnsAdress;
                    }
                }
            }

            throw new InvalidOperationException("Unable to find DNS Address");
        }
    }
}

1
2017-09-03 23:14