DNS解析主机IP地址

InetAddress是IP地址的工具类,利用InetAddress提供的getAllByName方法可以返回主机对应的所有IP地址,基于该方法可以解析主机IP地址。

1.InetAddress简介

InetAddress类可以将数字地址转换为主机名称,反之亦然,Inet4Address与Inet6Address类是InetAddress的两个直接子类,分别表示IPv4地址和IPv6地址。InetAddress类提供了各种getter方法以返回主机名、主机地址等信息。
InetAddress类不包含任何公开的构造函数,所以不能创建任意的地址。创建的所有地址都必须通过域名服务系统(DNS, Domain Name System)来进行检查。
在下面的程序中,通过InetAddress的方法得到域名所映射的所有IP地址,DNS是允许域名同一些列主机相关联的。

2.DNS解析主机IP地址程序

程序代码如下:

import java.net.InetAddress;
import java.net.UnknownHostException;

public class DNSLookUp {

	/**
	 * @author Qunzer
	 * @param args
	 * @since 2014/1/5
	 */
	public static void main(String[] args) {
		InetAddress[] inetHost = null;
		String[] hostName = { "www.qunar.com", "www.baidu.com",
				"www.google.com" };
		for (String myHostName : hostName) {
			System.out.println("List of " + myHostName + " servers");
			try {
				inetHost = InetAddress.getAllByName(myHostName);
			} catch (UnknownHostException e) {
				// TODO Auto-generated catch block
				System.out.println("the host is unknown!");
				e.printStackTrace();
			}
			int count = 0;
			for (InetAddress inet : inetHost) {
				System.out.println(count + ": " + inet.getHostName()
						+ "的DNS关联IP地址 " + inet.getHostAddress());
				count++;
			}
		}
		System.out.println("DNS looking up ended");
	}
}
在上面的程序中,利用字符串hostName定义主机域名数组,调用InetAddress类的静态方法getAllByName方法,该方法接受主机域名作为参数,然后返回所有和该域名关联的IP地址数组。 如果无法解析主机域名的时候回抛出UnknownHostException异常。
执行结果如下:
List of www.qunar.com servers
0: www.qunar.com的DNS关联IP地址 59.151.61.61
1: www.qunar.com的DNS关联IP地址 59.151.61.62
List of www.baidu.com servers
0: www.baidu.com的DNS关联IP地址 119.75.217.56
1: www.baidu.com的DNS关联IP地址 119.75.218.77
List of www.google.com servers
0: www.google.com的DNS关联IP地址 173.194.127.212
1: www.google.com的DNS关联IP地址 173.194.127.209
2: www.google.com的DNS关联IP地址 173.194.127.210
3: www.google.com的DNS关联IP地址 173.194.127.211
4: www.google.com的DNS关联IP地址 173.194.127.208
DNS looking up ended

从以上输出信息中可以看出,去哪儿网将自己的网站托管在了2个不同的IP地址上,百度将自己的网站托管了2个IP地址上,谷歌则将托管到了5个服务器上。
由于qunar,baidu,google可能添加或删除一些服务器,可能得到不同的结果。

 
 

你可能感兴趣的:(java编程)