2015-08-28 117 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地址,那么它将只返回这个地址,没有别的。 –