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位元一段)。例如:
58.218.204.252
或用文字網域表示。例如:
www.VeVB.COm
在網域名稱上,網域名稱伺服器(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位址。
【例】 說明Inetaddress類別的用法的應用程式。程式示範如何取得www.weixueyuan.net的網域名稱和IP位址。
Import java.net.*;Class Example10_1{ Public static void main(String args[]){ Try{ //以下程式碼透過網域建立InetAddress物件: InetAddress addr = InetAddress.getByname(“www.VeVB.COm”); String domainName = addr.getHostName();//取得主機名稱String IPName = addr.getHostAddress();//取得IP位址System.out.println(domainName); System.out.println(IPName); }catch(UnknownHostException e){ e.printStackTrace(); } }}
運行結果為:
www.VeVB.COm58.218.204.252