/*
* 由于IP地址较为复杂,Java将其封装成了对象
*
* 打开API,点进java.net包,找到InetAddress类:
*
* public class InetAddress extends Object implements Serializable:此类表示互联网协议 (IP) 地址。
*
* 其两个子类Inet4Address和Inet6Address分别对应IPV4和IPV6这两个协议。
*
* OSI模型的网络层和TCP/IP模型的网际层都能识别并解析IP地址
*/
/*
* 发现InetAddress没有构造函数,且有getAddress()等非静态方法,说明该类有静态方法可以返回对象。该类如下两方法:
*
* (1)public static InetAddress getByName(String host) throws UnknownHostException:在给定主机名的情况下确定主机的 IP 地址。
*
* (2)public static InetAddress getLocalHost() throws UnknownHostException: 返回本地主机。
*/
package demo;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class InetAddressDemo {
public static void main(String[] args) throws UnknownHostException {
//获取本地主机ip地址对象
//InetAddress ip = InetAddress.getLocalHost();
/*
* 拿到ip地址后,有以下两方法:
* (1)public String getHostAddress():返回 IP 对象字符串(以文本表现形式)。
* (2)public String getHostName():获取此 IP 对象的主机名。
*/
//System.out.println(ip.getHostAddress());//10.196.19.56
//System.out.println(ip.getHostName());//WangYu-PC
//获取其他主机的ip地址对象
InetAddress ip = InetAddress.getByName("10.196.19.56");
// InetAddress ip = InetAddress.getByName("WangYu-PC");效果与上一行一样,都是拿到对应信息的ip对象
System.out.println(ip.getHostAddress());//10.196.19.56
System.out.println(ip.getHostName());//WangYu-PC
//利用该方法获取百度IP地址和主机名
InetAddress ip2 = InetAddress.getByName("www.baidu.com");
System.out.println(ip2.getHostAddress());//119.75.218.70
System.out.println(ip2.getHostName());//www.baidu.com
}
}
/*
* 若随便给定一个ip地址:10.196.19.123,利用如下代码会运行较长时间:
*
* InetAddress ip = InetAddress.getByName("10.196.19.123");
* System.out.println(ip2.getHostAddress());
* System.out.println(ip2.getHostName());
*
* 因为计算机不停在解析该ip地址,发现找不到。
*/
/**
* InetAddress类一个需要了解的方法:
* public static InetAddress[] getAllByName(String host) throws UnknownHostException
* 在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。
*
* 获取到一个数组,其内全部是ip地址,因为如新浪、网易等,对应的ip地址不唯一,所以这个方法可以拿到所有ip地址对象。
*/
26-网络编程-05-网络编程(IP对象_InetAddress)
最新推荐文章于 2022-05-27 21:18:58 发布