java

位置:IT落伍者 >> java >> 浏览文章

Java网络编程从入门到精通(10):Inet4Address类和Inet6Address类


发布日期:2018年01月02日
 
Java网络编程从入门到精通(10):Inet4Address类和Inet6Address类

为了区分IPv和IPv地址Java提供了两个类InetAddress和InetAddress它们都是InetAddress类的子类这两个类的定义如下

publicfinalclassInetAddressextendsInetAddress

publicfinalclassInetAddressextendsInetAddress

这两个类分别按着IPv和IPv的规则实现了InetAddress类中的public方法它们所不同的是InetAddress类比InetAddress类多了一个方法isIPvCompatibleAddress这个方法用来判断一个IPv地址是否和IPv地址兼容和IPv兼容的IPv地址除了最后四个字节有值名其他的字节都是ABCDFAFA都是和IPv兼容的IPv地址

当使用InetAddress类的四个静态方法创建InetAddress对象后可以通过getAddress返回的byte数组来判断这个IP地址是IPv还是IPv地址(byte数组长度为就是IPv地址byte数组长度为就是IPv地址)也可以将instanceof来确定InetAddress对象是它的哪个子类的实例下面的代码演示了如何判断一个IP地址是IPv还是IPv地址

package mynet;

import*;

publicclass MyIP

{

publicstaticvoidmain(String[]args)throwsException

{

if(argslength==)

return;

InetAddressaddress=InetAddressgetByName(args[]);

Systemoutprintln(IP:+addressgetHostAddress());

switch(addressgetAddress()length)

{

case:

Systemoutprintln(根据byte数组长度判断这个IP地址是IPv地址!);

break;

case:

Systemoutprintln(根据byte数组长度判断这个IP地址是IPv地址!);

break;

}

if(addressinstanceofInetAddress)

Systemoutprintln(使用instanceof判断这个IP地址是IPv地址!);

elseif(addressinstanceofInetAddress)

Systemoutprintln(使用instanceof判断这个IP地址是IPv地址!);

}

}

测试

执行如下命令

javamynetMyIP

运行结果

IP:

根据byte数组长度判断这个IP地址是IPv地址!

使用instanceof判断这个IP地址是IPv地址!

测试

执行如下命令

javamynetMyIP

运行结果

IP::da::b::eff:feb:ce

根据byte数组长度判断这个IP地址是IPv地址!

使用instanceof判断这个IP地址是IPv地址!

               

上一篇:Java游戏编程杀手:3D跳棋游戏

下一篇:Java网络编程之URI、URL研究专题二