您的位置:首页 > 理论基础 > 计算机网络

Java学习笔记----网络编程(一):获取IP地址和域名

2015-12-02 11:11 826 查看
IP和域名简介

IP地址是一个32位的二进制数,在实际生活中是以四个十进制的数来表示的,如 172.199.20.3.每个十进制数代表8位二进制数。不过在我们的实际生活中IP地址不太好记,而引入了域名的概念来唯一标示因特网上的主机或路由器,例如www.baidu.com(百度的域名)

技术要点

获取IP地址和域名的技术要点:

通过java.net.InetAddress类的静态方法getLocalHost()能够获得本机的网络地址信息,也是一个InetAddress对象;

InetAddress类的getHostAddress()方法,能获取该网络地址的IP信息。getHostName()方法获取网络地址的域名或者机器名。静态方法getByName()根据域名获得该域名代表的主机的网络地址信息,返回的是一个InetAddress对象;

当一个主机配置多个网络地址时,可以通过InetAddress类的getAllByName()静态方法根据域名获得该域名代表的主机的所有网络地址信息,返回的是InetAddress对象组。

源代码:

package corejava;

import java.net.InetAddress;
import java.net.UnknownHostException;
/**
 * 获取IP地址和域名
 * */
public class TestGetIPandDomain {
	public static void getLocalIP() {
		try {
			InetAddress addr = InetAddress.getLocalHost();// 获取本机主机IP地址对象
			String hostAddr = addr.getHostAddress();// 获取IP地址
			String hostName = addr.getHostName();// 获取本机机器名
			System.out.println("本地IP地址:" + hostAddr);
			System.out.println("本地机器名:" + hostName);
		} catch (UnknownHostException e) {// 捕获未知主机异常
			System.out.println("不能获得主机IP地址:" + e.getMessage());
			System.exit(1);
		}

	}
	public static void getIPByName(String hostName){//根据域名获得主机的IP地址
		try {
			InetAddress addr=InetAddress.getByName(hostName);//根据域名创建主机地址对象
			String hostAddr=addr.getHostAddress();//获取主机IP地址
			System.out.println("域名为:"+hostName+"的主机IP地址:"+hostAddr);
		} catch (UnknownHostException e) {
			System.out.println("不能根据域名获得主机IP地址:" + e.getMessage());
			System.exit(1);
	}
	}
	public static void getAllIPByName(String hostName){//根据域名获得主机所有的IP地址
		try {
			InetAddress[] addrs=InetAddress.getAllByName(hostName);//根据域名创建主机地址对象
			String[] ips=new String[addrs.length];
			System.out.println("域名为:"+hostName+"的所有的主机IP地址:");
			for (int i = 0; i < addrs.length; i++) {
				ips[i]=addrs[i].getHostAddress();//获取主机IP地址
				System.out.println(ips[i]);
			}
		} catch (UnknownHostException e) {
			System.out.println("不能根据域名获得 主机所有IP地址:" + e.getMessage());
			System.exit(1);
		}
	}

	public static void main(String[] args) {
		getLocalIP();//调用方法获得本机的IP地址
		String hostName="www.baidu.com";//百度域名
		getIPByName(hostName);//获取百度的主机IP地址
		getAllIPByName(hostName);//获取百度域名主机所有的IP地址
		
	}
}


运行截图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: