C#: 如何从域名获取IP地址?

38

如何通过域名获取IP地址呢?例如:www.test.com


从 IP 获取域名怎么样? - Moshe
@Moshe:https://dev59.com/questions/DXRB5IYBdhLWcg3wHkPi - Jørn Schou-Rode
4个回答

40

你可以使用 System.Net.Dns 类:

Dns.GetHostAddresses("www.test.com");

2
请注意,它是复数形式 - 并非所有这些都可能在给定时间起作用。 - TomTom
1
真的,但我认为这种方法返回多个地址的情况很少见,特别是在互联网域名的情况下。 - Andrey
@Brian - 六个IP地址!哇!所以你需要存储它们并在一个不起作用时选择下一个。 - Andrey
由于并非所有地址都有效,这就是使用多个A记录的目的。 - Austin Salgat

19

您可以使用GetHostAddresses方法:

var address = Dns.GetHostAddresses("www.test.com")[0];

如果结果集为0怎么办?或者更有可能是大于1? - Andrey
1
@Moshe:如果您可以访问System.Net.Dns类,则应该可以。 - Svish
@Andrey:如果超过一个,它只会忽略其余的。如果是0,我猜它会崩溃:p - Svish
2
@Moshe,在VB.NET中:Dim address = Dns.GetHostAddresses("www.test.com")(0) - Darin Dimitrov
@Andrey,@Svish - 我真傻,当然是这样。@Darin Dimitrov - 谢谢。 - Moshe
对我来说非常好用!我只需要第一个IP地址! - Nick

2
您可以使用以下方法获得相同的结果:
Dns.GetHostAddresses("yahoo.com");

或者

await Dns.GetHostAddressesAsync("yahoo.com");

1
我的回答可能与上面的回答类似,但我在这里使用代码获取当前 Web 应用程序托管的 URL / 域名,并从中获取 IP 地址。 我在我的 C#MVC Web 应用程序 中使用了该代码,它运行良好。
Uri myUri = new Uri(((System.Web.HttpContextWrapper)HttpContext).Request.Url.ToString());
var ipAddress = Dns.GetHostAddresses(myUri.Host).FirstOrDefault().ToString();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接