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);