.Net中IP地址与主机名的互转

by 好大一小白 2010.5.2 12:36

这里将实现将一个IP地址解析为一个主机名,和从主机名得到IP地址的转换。

1,将IP地址解析为一个主机名

使用Dns.GetHostEntry方法,得到一个IP地址的主机名。一下代码解析了一个IP地址,并从IPHostEntry的HostName属性访问主机名:

//使用Dns类解析地址

IPHostEntry iphost = Dns.GetHostEntry(“127.0.0.1”);

//HostName属性包含了主机名

string hostName = iphost.HostName;

System.Net.Dns类提供了简单的DNS解析功能。GetHostEntry方法返回一个IPHostEntry,可以通过其HostName属性访问主机名。如果无法解析条目,IPHostEntry的HostName属性中则是所传入IP地址的一个串表示(假设这个是合法的IP地址)。如果访问AddressList的第一个成员,并访问IPAddress.ScopeId属性来检查这些条目,将抛出一个ScoketException。

 

2,将主机名转换成IP地址

使用Dns.GetHostEntry方法得到IP地址。在以下代码中,为GetHostEntry方法提供了一个主机名,他会返回一个IPHostEntry,由此可以构造一个地址串。如果主机名未解析,将抛出一个ScoketException,指出“没有这个主机”。

public static string HostName2Ip(string hostname)

{

//使用Dns类将hostname解析成一个iphost条目

IPHostEntry iphost = System.Net.Dns.GetHostEntry(hostname);

//得到对应主机名的所有可能IP

IPAddress []  addresses = iphost.AddressList;

//建立列表的一个文本表示

StringBuilder addressList = new StringBuilder();

//得到各个IP地址

foreach(IPAddress address in addresses)

{

addressList.AppendFormat(“IP Address: {0};”, addres.ToString());

}

return addressList.toString();

}

使用时调用HosName2Ip(“hostname”)就可以了。

通过AddressList属性,IPHostEntry可以把多个IP地址与一个主机名关联。AddressList是一个IPAddress对象数组,每个对象保存一个IP地址。一旦解析了IPHostEntry,就可以使用Foreach循环迭代处理AddressList来创建一个串。如果条目无法解析,将抛出一个ScoketException。

 

Tags: , , ,

WEB开发 | ASP.NET

不允许评论

微信赞

本站统计

36 篇文章
5 个单页
12 条评论
12 次评分
1315506 次访问
访问统计开始于 2010年4月24日
平均日访问 224 次
当前 6 人在线

声明

本博所有网友评论不代表本博立场,版权归其作者所有。 
苏ICP备09004001号
Powered by BlogYi.net  edit by 1wanweb.com
© Copyright 2008-2017