InetAddress:封裝計算機的IP地址和DNS,沒有端口
InetAddress() { holder = new InetAddressHolder(); }
InetSocketAddress:封裝計算機的IP地址和端口,從構造方法就能發現
private InetSocketAddressHolder(String hostname, InetAddress addr, int port) { this.hostname = hostname; this.addr = addr; this.port = port; }
package ghs.jute;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
public class InetAddressTest {
public static void main(String[] args) throws UnknownHostException {
try {
//InetAddress,封裝計算機的IP地址和DNS,沒有端口
System.out.println("========InetAddress封裝計算機的IP地址和DNS,沒有端口========");
// 使用getLocalHost方法爲InetAddress創建對象;
InetAddress add = InetAddress.getLocalHost();//獲得本機的InetAddress對象
System.out.println("獲取主機Ip,InetAddress.getHostAddress:" + add.getHostAddress());//返回本機IP地址
System.out.println("獲取主機名hostname,InetAddress.getHostName:" + add.getHostName());//輸出計算機名
//根據域名(dns解析)得到InetAddress對象
add = InetAddress.getByName("www.baidu.com");
System.out.println("獲取主機Ip,InetAddress.getHostAddress:" + add.getHostAddress());//返回百度服務器的IP地址
System.out.println("獲取主機名hostname,InetAddress.getHostName:" + add.getHostName());//輸出www.baidu.com;
//根據ip得到InetAddress對象;
add = InetAddress.getByName("111.13.100.91");
System.out.println("獲取主機Ip,InetAddress.getHostAddress:" + add.getHostAddress());
//如果ip地址存在,並且DNS給你解析就會輸出
System.out.println("獲取主機名hostname,InetAddress.getHostName:" + add.getHostName());
//www.baidu.com,不給你解析就會返回這個IP本身;
System.out.println("========InetAddress封裝計算機的IP地址和DNS,沒有端口========");
System.out.println("========InetSocketAddress封裝計算機的IP地址和端口========");
InetSocketAddress add1 = new InetSocketAddress("10.1.1.165", 2181);
System.out.println("InetSocketAddress.getHostName():" + add1.getHostName());
System.out.println("InetSocketAddress.getPort():" + add1.getPort());
System.out.println("========InetSocketAddress封裝計算機的IP地址和端口========");
//根據InetSocketAddress獲取InetAddress
System.out.println("========根據InetSocketAddress獲取InetAddress========");
InetAddress addr = add1.getAddress();//獲得端口的ip;
System.out.println(addr.getHostAddress());//返回ip;
System.out.println(addr.getHostName());//輸出端口名;
System.out.println("========根據InetSocketAddress獲取InetAddress========");
}catch(Exception e){
e.printStackTrace();
}
}
}
運行結果:
========InetAddress封裝計算機的IP地址和DNS,沒有端口========
獲取主機Ip,InetAddress.getHostAddress:127.0.0.1
獲取主機名hostname,InetAddress.getHostName:gaohuashui
獲取主機Ip,InetAddress.getHostAddress:112.80.248.76
獲取主機名hostname,InetAddress.getHostName:www.baidu.com
獲取主機Ip,InetAddress.getHostAddress:111.13.100.91
獲取主機名hostname,InetAddress.getHostName:111.13.100.91
========InetAddress封裝計算機的IP地址和DNS,沒有端口========
========InetSocketAddress封裝計算機的IP地址和端口========
InetSocketAddress.getHostName():water.com
InetSocketAddress.getPort():2181
========InetSocketAddress封裝計算機的IP地址和端口========
========根據InetSocketAddress獲取InetAddress========
10.1.1.165
water.com
========根據InetSocketAddress獲取InetAddress========