Java网络编程从入门到精通(10):Inet4Address类和Inet6Address类
Java网络编程从入门到精通(10):Inet4Address类和Inet6Address类
为了区分IPv 和IPv 地址 Java提供了两个类 Inet Address和Inet Address 它们都是InetAddress类的子类 这两个类的定义如下
public final class Inet Address extends InetAddresspublic final class Inet Address extends InetAddress
这两个类分别按著IPv 和IPv 的规则实现了InetAddress类中的public方法 它们所不同的是Inet Address类比Inet Address类多了一个方法 isIPv CompatibleAddress 这个方法用来判断一个IPv 地址是否和IPv 地址兼容 和IPv 兼容的IPv 地址除了最后四个字节有值名 其他的字节都是 如 ABCD FAFA都是和IPv 兼容的IPv 地址
当使用InetAddress类的四个静态方法创建InetAddress对象后 可以通过getAddress返回的byte数组来判断这个IP地址是IPv 还是IPv 地址(byte数组长度为 就是IPv 地址 byte数组长度为 就是IPv 地址) 也可以将instanceof来确定InetAddress对象是它的哪个子类的实例 下面的代码演示了如何判断一个IP地址是IPv 还是IPv 地址
package mynet;import *;public class MyIP{ public static void main(String[] args) throws Exception { if (args length == ) return; InetAddress address = InetAddress getByName(args[ ]); System out println( IP: + address getHostAddress()); switch (address getAddress() length) { case : System out println( 根据byte数组长度判断这个IP地址是IPv 地址! ); break; case : System out println( 根据byte数组长度判断这个IP地址是IPv 地址! ); break; } if (address instanceof Inet Address) System out println( 使用instanceof判断这个IP地址是IPv 地址! ); else if (address instanceof Inet Address) System out println( 使用instanceof判断这个IP地址是IPv 地址! ); }}
测试
执行如下命令
java mynet MyIP

运行结果
IP: 根据byte数组长度判断这个IP地址是IPv 地址!使用instanceof判断这个IP地址是IPv 地址!
测试
执行如下命令
java mynet MyIP
运行结果
lishixinzhi/Article/program/Java/hx/201311/25929