2、Internet地址(下)

 

测试可达性

 

InerAddress类有两个isRechable()方法

可以测试一个特定的节点对向前主机是否可以建立一个网络连接 

 

无法连接可能由于阻塞、防火墙等因素

第一个方法:在指定的时间内得到相应则返回为true

第二个方法:允许指定从那个本地网络接口建立连接,以及生存时间

        InetAddress byName = InetAddress.getByName("www.baidu.com");
        System.out.println(byName.toString());
        System.out.println(byName.isReachable(1000));

 

 

 

Inet4Address和Inet6Address

 使用以上两个类进行区分IPv4和IPv6地址

 

其实可以使用getAddress()返回字节数组的大小进行区分

 

Inet4Address覆盖了InetAddress的几个方法,没有改变任何公共方式改变其行为

 

Inet6Sddress添加了一个新的方法:

当且仅当地址实际上是填充在IPv6“容器”中的一个IPv4地址时,这个方法返回为true

 

NetworkInterface类

表示一个本地的IP地址

可以是一个物理接口,也可以是一个虚拟接口,与机器其他IP地址绑定到同一个物理硬件

 

提供的一些方法可以枚举所有本地地址

并由他们创建对象

这些InetAddress对象可用于创建socket服务器socket等

 

返回一个NetworkInterface对象

表示指定名字的网络接口

如果没有这个接口将会返回null

        NetworkInterface wlan = NetworkInterface.getByName("wlan3");
        System.out.println("wlan:" + wlan);

 

 

返回一个NetworkInterface对象

表示指定IP地址绑定的网络接口

如果主机上没有网络接口与这个IP地址绑定返回为null

        InetAddress byName3 = InetAddress.getByName("127.0.0.1");
        NetworkInterface in = NetworkInterface.getByInetAddress(byName3);
        System.out.println(in);

 

 

返回一个java.util.Enumeration

这个列出本地主机上的所有网络接口

   Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();

        while (networkInterfaces.hasMoreElements()){
            NetworkInterface net = networkInterfaces.nextElement();
            System.out.println(net);
        }

 

一个网络接口可以绑定多个ip

该方法可以返回一个java.util.Enumeration

对于这个接口绑定的每一个IP弟子都包含了一个InetAddress

        NetworkInterface wlan = NetworkInterface.getByName("wlan3");
        Enumeration<InetAddress> inetAddresses = wlan.getInetAddresses();
        while (inetAddresses.hasMoreElements()){
            InetAddress address = inetAddresses.nextElement();
            System.out.println(address);
        }

 

 

 

返回某个特定特定的NetworkInterface对象名

 

 返回特定NetworkInterface的一个更友好的名字

        NetworkInterface wlan = NetworkInterface.getByName("wlan3");
        String displayName = wlan.getDisplayName();
        System.out.println(displayName);

 

 

posted @ 2019-05-23 13:43  MrChengs  阅读(253)  评论(0编辑  收藏  举报