2010-05-25 31 views
10

如何在C#中獲取當前的DNS服務器?如何在C#中獲取當前的DNS服務器?

+2

由你的,你的意思是本地機器的DNS服務器,你的域名或其他的DNS服務器?對於什麼是「您的DNS服務器」,IMO有許多不同的答案。 – 2010-05-25 16:57:27

+0

我在考慮將執行Mx Record Lookup的不安全代碼轉換爲安全版本。 請參閱: http://stackoverflow.com/questions/2906615/how-to-get-around-dnsrecordlistfree-error-in-net-framework-4-0 – 2010-05-25 17:26:37

+0

我想知道的是如何執行DNS查找,而不必指定DNS服務器名稱,即讓系統使用默認值。這就是你在任何時候在某處輸入URL時會發生的情況,所以不知道爲什麼DNS類不能允許默認值。 – 2012-03-29 15:03:56

回答

0

我最近正在嘗試做同樣的事情,發現了Robert Sindal的excellent example

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"); 
     } 
    } 
} 
相關問題