-
1. InetAddress类
InetAddress是Java对IP地址的封装,在java.net中有许多类都使用到了InetAddress,包括ServerSocket,Socket,DatagramSocket等等。
InetAddress是一个不可变对象: • InetAddress是一个对象,包含3个属性:主机名称、主机别名、主机ip • 一个ip对应唯一一个主机名,一个主机名可以对应多个ip(一台计算机上有多个网络地址),一个域名可以对应多个ip(一个web服务有多台机器做负载均衡),一个ip也可以对应多个域名(多个web服务器在同一台机器上) • 一般的主机别名就是:网站的域名,为了便于记忆 ,DNS通过主机别名或者主机名都能找到相应的IP
-
(1)
1 所有已实现的接口: 2 Serializable 3 直接已知子类: 4 Inet4Address, Inet6Address
InetAddress这个类没有构造方法,我们回忆一下什么样的类没有构造方法,如下:
如果一个类没有构造方法:
A: 成员全部是静态的(Math,Arrays,Collections)
B: 单例设计模式(Runtime)
C: 类中有静态方法返回该类的对象(InetAddress)
class Demo {
private Demo(){}
public static Demo getXxx() {
return new Demo();
}
}
很明显通过API知道InetAddress是C这种情况。
(2)看InetAddress的成员方法:
1 public static InetAddress getByName(String host):根据主机名或者IP地址的字符串表示得到IP地址对象
2. InetAddress使用代码示例:
1 package com.himi.InetAddressDemo; 2 3 import java.net.InetAddress; 4 import java.net.UnknownHostException; 5 6 public class InetAddressDemo { 7 8 public static void main(String[] args) throws UnknownHostException { 9 //创建IP地址对象 10 //InetAddress address = InetAddress.getByName("GDIZOK2X2LA0SQG");(本机) 11 //InetAddress address = InetAddress.getByName("49.123.72.145"");(本机) 12 InetAddress address = InetAddress.getByName("49.123.72.140");//同一个网络别的主机 13 14 //获取主机名 和 IP地址 15 String host = address.getHostName(); 16 String IP = address.getHostAddress(); 17 System.out.println("主机名为:"+host+"======="+"IP地址为"+IP); 18 } 19 20 }
运行效果,如下:
本机:
别的主机:(同一个网段)