在Java2环境中应用IP地址封装对象
作者:苏洋 本文选自:赛迪网 2003年01月17日
IP地址封装对象的结构
Java2平台中定义的InetAddress对象是利用Java语言进行网络通讯程序设计过程中,对互联网IP地址进行对象类型封装后创建的JDK API对象。以InetAddress对象为父对象,Java2平台中还定义了Inet4Address和Inet6Address对象,分别对应于符合IPv4规范和IPv6规范的互联网地址对象。InetAddress对象的定义继续关系如下:
java.lang.Object
+--java.net.InetAddress
在该对象中没有定义构造方法,即不能够利用new操作符创建InetAddress对象实例,那么如何获取该对象的实例呢?在InetAddress对象中定义了多种类型的成员方法,在应用程序中可以调用这些方法来实现相应的网络功能:
● byte[] getAddress()
● static InetAddress[] getAllByName(String host)
● static InetAddress getByAddr(byte[] addr)
● static InetAddress getByAddr(String host, byte[] addr)
● static InetAddress getByName(String host)
● String getHostAddress()
● static InetAddress getLocalHost()
… …
从上述InetAddress对象的成员方法定义名称可以看出:在Java应用程序中,可以采用不同的方法获取指定网络对象的IP地址封装对象实例,并进而调用该对象中定义的各种类型的成员方法为应用程序提供相应的功能。
IP地址封装对象应用实例
从上述InetAddress对象定义的成员方法的参数形式可以看出:在读者的Java应用程序中获取本机IP地址封装对象的方法只需要调用getLocalHost方法就可以实现,而可以采用通过指定IP地址、指定服务器名称的方式创建指向其它计算机系统的IP地址封装对象。下面的实例代码演示了InetAddress对象实例的创建方法,并在创建IP地址封装对象实例后,调用该对象中定义的成员方法获取服务的方式:
//IPAddressDemo.java
import java.net.*;
public class IPAddressDemo
{
InetAddress localIPAddress = null;
InetAddress ccidnetIPAddress = null;
public static void main( String args[])
{
IPAddressDemo ipInstance;
ipInstance = new IPAddressDemo();
System.out.println("本机IP地址 : " + ipInstance.getLocalIP());
System.out.println("赛迪网服务器IP地址 : " +
ipInstance.getCCIDNETIP("www.ccidnet.com.cn"));
System.out.println("赛迪网服务器域名 : " +
ipInstance.getCCIDNETName());
}
//取得本机IP地址成员方法
public InetAddress getLocalIP()
{
try
{
localIPAddress = InetAddress.getLocalHost();
}
catch (UnknownHostException e)
{}
return ( localIPAddress );
}
//取得赛迪网服务器的IP地址成员方法
public InetAddress getCCIDNETIP( String strServerName )
{
try
{
ccidnetIPAddress = InetAddress.getByName( strServerName );
}
catch (UnknownHostException e)
{}
return ( ccidnetIPAddress );
}
//通过IP地址封装对象取得计算机系统域名成员方法
public String getCCIDNETName()
{
String strServerName = null;
try
{
strServerName = ccidnetIPAddress.getHostName();
}
catch (SecurityException e)
{}
return ( strServerName );
}
}
上面的程序代码中,Java Main方法IPAddressDemo中定义了getLocalIP、getCCIDNETIP和getCCIDNETName三个成员方法,分别用于获取指向当前计算机系统的IP地址对象、获取指向赛迪网服务器的IP地址对象和利用该地址对象获取服务器域名的方法。