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。