为了方便我们对IP地址的获取和操作,Java提供了一个InetAddress类,该类表示Internet协议(IP)地址。
IP可以唯一的标识互联网上的计算机(通信实体)。InetAddress用来代表IP地址一个InetAdress的对象就代表着一个IP地址。InetAddress的构造函数不是公开的(public),所以需要通过它提供的静态方法来获取。下面让我们来看看InetAddress的五种方法:
import java.net.InetAddress;
import java.net.UnknownHostException;
public class InetAddressDemo {
public static void main(String[] args) throws UnknownHostException {
//1.获取本机的InetAddress对象
InetAddress localhost=InetAddress.getLocalHost();
System.out.println(localhost); //LAPTOP-QBVPQFBU/192.168.0.112
//2.根据指定主机名获取InetAddress对象
InetAddress host1 = InetAddress.getByName("LAPTOP-QBVPQFBU");
System.out.println("host1="+host1); //LAPTOP-QBVPQFBU/192.168.0.112
//3.根据域名返回InetAddress对象,比如 www.qq.com
InetAddress host2 = InetAddress.getByName("www.qq.com");
System.out.println("host2="+host2); //host2=www.qq.com/101.91.42.232
//4.通过 InetAddress 对象,获取相应的地址
String hostAddress=host2.getHostAddress();
System.out.println("host2 对应的IP为:"+hostAddress); //host2 对应的IP为:101.91.42.232
//5.通过 InetAddress 对象,获取相应的主机名/或者域名
String hostName=host2.getHostName();
System.out.println("host2 对应的主机名/域名为:"+hostName); //host2 对应的主机名/域名为:www.qq.com
}
}
注:LAPTOP-QBVPQFBU是博主的设备名称,后面的就是IP地址
在这些静态方法中,最为常用的应该是getByName(String host)方法,只需要传入目标主机的名字,InetAddress会尝试做连接DNS服务器,并且获取IP地址的操作。