Java語言的優點之一是Java程序能訪問網絡資源。Java提供一系列的類支持Java程序訪問網絡資源。
TCP/IP協議和IP地址
爲了進行網絡通訊,通訊雙方必須遵照通訊協議.目前最普遍使用的是TCP/IP協議,它是Internet中各方所遵循的公共協議.TCP(Transport Control Protocol)是一種傳輸控制協議,IP(Internet Protocol)是一種網際協議,TCP/IP表明這兩個協議的。
TCP/IP分爲四個層次:
網絡接口層:負責接收和發送物理幀;
網絡層:負責相鄰節點之間的通訊;
傳輸層:負責起點到終點的通訊;
應用層:提供諸如文件傳輸、電子郵件等應用程序。
TCP協議將任何網絡信息傳輸看成信息流。例如,機器A上的一個長報文發送到機器B,發送端A須要將數據分片,把一片片數據分別打包發送。數據包有一個頭,指明該數據包發往何處、兇中數據在接收序列中所處的位置。每一個包都按照IP地址提供的目的地從一個臺機器傳送到另外一臺機器,或從一個網絡節點傳送到另外一個網絡節點。在接收端B,這些數據包都可以按照正確的順序從新組裝起來。
TCP/IP協議是一個協議族,由一組協議組成,主要包含如下更具體的協議:
Telnet(遠程登陸):容許一臺計算機用戶登陸到另外一臺遠程計算機上,使遠程操做如同在本地計算機上操做同樣。
FTP(File Transfer protocol,文件傳輸協議):容許用戶將遠程主機上的文件複製到本身的計算機上。
SMTP(simple Mail Transfer Protocol,簡單郵件傳輸協議):用於傳輸電子郵件。
NFS(Network file Server,網絡文件服務器):使多臺計算機透明地訪問彼此的目錄。
HTTP:一種超文本傳輸協議,它是基於TCP/IP協議的,是WWW瀏覽器和服務器之間應用層的通訊協議。HTTP是一種通用、無狀態、面向對象的協議。HTTP會話(事務)包括四個步驟:鏈接(Connection)、請求(Request)、應答(Response)和關閉(Close)。
Java語言可編寫低層的網絡應用。例如,傳輸文件,創建郵件控制器,處理網絡數據等。Java語言支持的Internet協議有ftp、telnet、www等,支持網絡通訊的軟件都在java.net包中,例如,java.net.ftp、java.net.www等。
IP地址用於指明因特網上的一臺計算機在網絡中的地址,用32位二進制代碼表示一個網絡地址。地址分A、B、C、D、E五類,經常使用的是A、B、C三類:
A(1.0.0.0-126.255.255.255):0,7位網絡號,後24位爲主機號;
B(128.0.0.0-191.255.255.255):10,14位網絡號,後16位爲主機號;
C(192.0.0.0-223.255.255.255):110,21位網絡號,後8位爲主機號;
D(224.0.0.0-239.255.255.255):1110,28位多點廣播組標號;
E(240.0.0.0-254.255.255.255):1111,保留試驗使用。
一般,IP地址用四段十進制數表示(8位一段)。例如:
116.255.226.187
或用文字域名錶示。例如:
www.weixueyuan.net
在因特網上,域名服務器(Domain Name Server,DNS)執行文字名稱到二進制網絡地址的映射。
InetAddress類
Java.net包中有InetAddress類的定義,InetAddress類的對象用於IP地址和域名,該類提供如下方法:
getByName(String s):得到一個InetAddress 類的對象,該對象中含有主機的IP地址和域名,該對象用以下格式表示它包含的信息:www.sina.com.cn/202.108.37.40;
String getHostName():獲取InetAddress對象的域名;
String getHostAddress():獲取InetAddress對象的IP地址;
getLocalHost():得到一個InetAddress對象,該對象含有本地機的域名和IP地址。
【例 13-1】 說明Inetaddress類的用法的應用程序。程序演示如何獲取www.weixueyuan.net的域名和IP地址。
Import java.net.*;
Class Example10_1{
Public static void main(String args[]){
Try{ //如下代碼經過域名創建InetAddress對象:
InetAddress addr = InetAddress.getByname(「www.weixueyuan.net」);
String domainName = addr.getHostName();//得到主機名
String IPName = addr.getHostAddress();//得到IP地址
System.out.println(domainName);
System.out.println www.lieqibiji.com (IPName);
}catch(UnknownHostException e){
e.printStackTrace();
}
}
}
運行結果爲:
www.weixueyuan.net
116.255.226.187java