2015-08-28 118 views
1

我想獲得一個主機的所有IP地址,並需要將這些IP添加到防火牆例外規則。我正在使用stystem.net dns.gethostaddresses來獲取IP地址列表。但它只在任何時間點返回一個IP地址,而不是獲取與主機名關聯的所有IP地址。DNS,gethostaddresses只返回一個IP地址

這裏是代碼片段...

IPAddress[] arr=Dns.GetHostAddresses(ConfigurationSettings.AppSettings["Host"].ToString()); 

      foreach (IPAddress ip in arr) 
      { 
       Console.WriteLine(ip.ToString()); 
      } 
+0

你能顯示一些代碼? –

+0

IPAddress [] array = Dns.GetHostAddresses(ConfigurationSettings.AppSettings [「HostName」]。ToString()); foreach(ipAddress ip in array) Console.WriteLine(ip.ToString()); } 這是我試圖執行代碼,按MSDN GetHostAddressses應該返回IP地址列表,但它不 – Shiva

+0

我的意思是,添加代碼中的問題,用適當的格式化(點擊幫助按鈕,看看如何格式化代碼...)。謝謝 –

回答

1

假設你正在運行在同一臺計算機上的代碼,它有多個IP Addresses.This代碼多個接口工作對我來說

foreach (NetworkInterface netInterface in NetworkInterface.GetAllNetworkInterfaces()) 
    { 
    Console.WriteLine("Name: " + netInterface.Name); 
    Console.WriteLine("Description: " + netInterface.Description); 
    Console.WriteLine("Addresses: "); 
    IPInterfaceProperties ipProps = netInterface.GetIPProperties(); 
    foreach (UnicastIPAddressInformation addr in ipProps.UnicastAddresses) 
    { 
     Console.WriteLine(" " + addr.Address.ToString()); 
    } 
    Console.WriteLine(""); 
    } 
+0

嗨Sumeet,我不需要獲取網絡信息。我的要求是,對於給定的DNS,我需要獲取所有IP地址並添加到防火牆例外規則中。 – Shiva

+0

嘗試這些,但我認爲這取決於它正在尋找的DNS服務器。我試過這段代碼IPAddress [] temp = Dns.GetHostAddresses(「google.com」); IPHostEntry temp1 = Dns.GetHostEntry(「google.com」);它返回一些時間一個IP地址和另一個時間多個IP地址。 nslookup也給出了相同的結果 –

+0

@Shiva:doc表示_如果hostNameOrAddress是一個IP地址,則返回該地址而不查詢DNS服務器_,所以如果ConfigurationSettings.AppSettings [「Host」]。ToString()'是一個IP地址,那麼它將只返回這個地址,沒有別的。 –