您好我有一个问题,我试图获取nslookup域的所有IP地址。我在一个按钮上使用c#中的以下脚本,但它只打印出1个ip地址,我做错了什么?
string myHost = "domain.com";
string myIP = null;
for (int i = 0; i <= System.Net.Dns.GetHostEntry(myHost).AddressList.Length - 1; i++)
{
if (System.Net.Dns.GetHostEntry(myHost).AddressList[i].IsIPv6LinkLocal == false)
{
//myIP = System.Net.Dns.GetHostEntry(myHost).AddressList[i].ToString();
txtIp.Text = System.Net.Dns.GetHostEntry(myHost).AddressList[i].ToString();
}
}
所有的帮助都会很棒,因为我在stackoverflow上看到过多个答案,但我无法让它正常工作。
的问候, 丹尼斯
答案 0 :(得分:3)
首先,你应该避免让dns请求 3次。将结果存储在变量中。
其次,将txtIp.Text
设置为最后一个条目。您需要追加字符串,但要替换它们。试试这段代码:
string myHost = "domain.com";
string myIP = null;
IPHostEntry hostEntry = System.Net.Dns.GetHostEntry(myHost);
for (int i = 0; i <= hostEntry.AddressList.Length - 1; i++)
{
if (!hostEntry.AddressList[i].IsIPv6LinkLocal)
{
txtIp.Text += hostEntry.AddressList[i].ToString();
}
}
但这仍然可以缩短到这一点:
string myHost = "domain.com";
string myIP = null;
IPHostEntry hostEntry = System.Net.Dns.GetHostEntry(myHost);
txtIP.Text = string.Join(", ", hostEntry.AddressList.Where(ip => !ip.IsIPv6LinkLocal).Select(ip => ip.ToString()));
这将为您提供以逗号分隔的IP地址列表。