在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地址对象和利用该地址对象获取服务器域名的方法。
从这些成员方法的定义形式可以看出:InetAddress对象中定义的静态类型成员方法getLocalHost和getByName返回的是InetAddress对象实例,在后续程序代码中可以直接调用该实例成员方法来获取服务,例如在getCCIDNETName方法中调用成员方法getHostName的过程。该程序的输出结果为:
本机IP地址 : support/192.168.19.251
赛迪网服务器IP地址 : www.ccidnet.com.cn/210.51.0.73
赛迪网服务器域名 : www.ccidnet.com.cn
Java2平台中定义了多种类型的对象,用于以URL、Socket、RMI和CORBA等方式实现Java程序的网络通信和数据交换,而本文只是对互联网环境中的基本应用对象-IP地址的Java封装对象的结构和成员方法形式进行了简要剖析,并编写了简单的实例程序说明其成员方法的应用方式,希望能够为读者利用Java语言进行网络程序设计有所帮助。