`

创建InetAddress对象(四个静态方法)

阅读更多

        前些日子找工作,因面Java方向,碰到不少面试官都问到java网络编程问题,由于之前没有接触过java网络编程,很是尴尬。回来思来想去,觉得搞Java的不会网络编程,是个缺陷,于是决定重零开始,弥补这个缺陷。

 

 

package testInetAddress;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.security.*;

//创建InetAddress对象的四个静态方法

/*
 * 在InetAddress类中覆盖了Object类的toString方法,实现如下:
 *  public String toString() {
 *		return ((hostName != null) ? hostName : "") + "/" + getHostAddress(); 
 *	}
 */
public class MyInetAddress {

	/* 1. getLocalHost()
	 * getLocalHost()方法,可以得到描述本机IP的InetAddress对象
	 * 当本机绑定了多个IP时,getLocalHost只返回第一个IP
	 */
	public static void getLocalHostTest() throws UnknownHostException {
		InetAddress localAddress = InetAddress.getLocalHost();
		System.out.println(localAddress);//結果 ZZQ/192.168.1.105
	}
	
	/* 2. getByName(String host)
	 * getByName(String host)有一个String类型参数host,可以通过这个参数指定远程主机的域名
	 * (1). 如果host所指的域名对应多个IP,getByName返回第一个IP。
	 * (2). 如果本机名已知,可以使用getByName方法来代替getLocalHost。
	 * (3). 当host的值是localhost时,返回的IP一般是127.0.0.1。
	 * (4). 如果host是不存在的域名,getByName将抛出UnknownHostException异常。
	 * (5). 如果host是IP地址,无论这个IP地址是否存在,getByName方法都会返回这个IP地址。
	 * */
	public static void getByNameTest() throws UnknownHostException {
		InetAddress localAddress = InetAddress.getByName("ZZQ");
		System.out.println(localAddress);//結果 ZZQ/192.168.1.105
	}
	
	/* 3. getAllByName(String host)
	 * 该方法返回一个InetAddress类型的数组
	 * (1). getByName方法返回的IP地址就是getAllByName方法返回的第一个IP地址
	 * 	getByName的实现代码如下: 
	 * 	public static InetAddress getByName(String host) throws UnknownHostException { 
	 * 		return InetAddress.getAllByName(host)[0]; 
	 * 	} 
	 * (2). 当host不存在时,getAllByName也会抛出UnknowHostException异常
	 * */
	public static void getAllByNameTest() throws UnknownHostException {
		InetAddress[] localAddress = InetAddress.getAllByName("www.neu.edu.cn");
		for (InetAddress address : localAddress)
			System.out.println(address);
	}

	/* 4.getByAddress(byte[] addr) 		getByAddress(String host, byte[] addr) 
	 * (1). 这个方法必须通过IP地址来创建InetAddress对象,而且IP地址必须是byte数组形式
	 * (2). getByAddress方法并不验证这个IP地址是否存在,只是简单地创建一个InetAddress对象
	 * (3). 第二个重载形式多了一个host,这个host只是一个用于表示addr的别名
	 * */
	public static void getByAddressTest() throws UnknownHostException {
		byte ip[] = new byte[] { (byte) 141, (byte) 146, 8 , 66}; 
		InetAddress localAddress = InetAddress.getByAddress(ip);
		InetAddress address2 = InetAddress.getByAddress("Oracle官方网站", ip); 
		System.out.println(localAddress);//结果 		/141.146.8.66 
		System.out.println(address2); //结果		Oracle官方网站/141.146.8.66    
	}
	public static void main(String[] args) throws UnknownHostException {
		getLocalHostTest();
		getByNameTest();
		getAllByNameTest();
		getByAddressTest();
	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics