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語言進行網路程式設計有所協助。