Java(網(wǎng)絡(luò)編程)2_第1頁
Java(網(wǎng)絡(luò)編程)2_第2頁
Java(網(wǎng)絡(luò)編程)2_第3頁
Java(網(wǎng)絡(luò)編程)2_第4頁
Java(網(wǎng)絡(luò)編程)2_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第第11章章 網(wǎng)絡(luò)編程網(wǎng)絡(luò)編程教學(xué)目的要求1.了解網(wǎng)絡(luò)編程的基本知識;了解網(wǎng)絡(luò)編程的基本知識; 2.掌握使用掌握使用URL獲取網(wǎng)絡(luò)資源的方法;獲取網(wǎng)絡(luò)資源的方法;3.熟練掌握基于熟練掌握基于TCP的網(wǎng)絡(luò)通信技術(shù)。的網(wǎng)絡(luò)通信技術(shù)。11.1 網(wǎng)絡(luò)編程的基本概念網(wǎng)絡(luò)編程的基本概念 Java作為一種與平臺無關(guān)的語言,從一作為一種與平臺無關(guān)的語言,從一出現(xiàn)就與網(wǎng)絡(luò)有關(guān)極其密切的關(guān)系,因出現(xiàn)就與網(wǎng)絡(luò)有關(guān)極其密切的關(guān)系,因為為Java寫的程序可以在網(wǎng)絡(luò)上直接運(yùn)行,寫的程序可以在網(wǎng)絡(luò)上直接運(yùn)行,使用使用Java,只需編寫簡單的代碼就能實,只需編寫簡單的代碼就能實現(xiàn)強(qiáng)大的網(wǎng)絡(luò)功能。下面將介紹幾個與現(xiàn)強(qiáng)大的網(wǎng)絡(luò)功

2、能。下面將介紹幾個與Java網(wǎng)絡(luò)編程有關(guān)的概念。網(wǎng)絡(luò)編程有關(guān)的概念。TCP/IP協(xié)議概述協(xié)議概述 在編寫網(wǎng)絡(luò)通信的在編寫網(wǎng)絡(luò)通信的Java程序時,是在應(yīng)用層編程序時,是在應(yīng)用層編寫程序的,所以根本不必關(guān)心寫程序的,所以根本不必關(guān)心TCP/IP的層次,的層次,只要用只要用包中的類即可,這些類提供了包中的類即可,這些類提供了系統(tǒng)無關(guān)的網(wǎng)絡(luò)通信服務(wù)。但是即使如此,也系統(tǒng)無關(guān)的網(wǎng)絡(luò)通信服務(wù)。但是即使如此,也需了解一下需了解一下TCP/IP協(xié)議。協(xié)議。 確切地說,確切地說,TCP/IP協(xié)議是一組包括協(xié)議是一組包括TCP協(xié)議和協(xié)議和IP協(xié)議、協(xié)議、UDP(User Datagram Protocol)協(xié))

3、協(xié)議、議、ICMP(Internet Control Message Protocol)協(xié)議和其他一些協(xié)議的協(xié)議族。)協(xié)議和其他一些協(xié)議的協(xié)議族。TCP/IP通信協(xié)議采用了通信協(xié)議采用了4層的層級結(jié)構(gòu),每一層的層級結(jié)構(gòu),每一層都使用它的下一層所提供的網(wǎng)絡(luò)來完成自己層都使用它的下一層所提供的網(wǎng)絡(luò)來完成自己的需求。這的需求。這4層分別為:層分別為: 應(yīng)用層:應(yīng)用程序間溝通的層,如簡單電子郵應(yīng)用層:應(yīng)用程序間溝通的層,如簡單電子郵件傳輸(件傳輸(SMTP)、文件傳輸協(xié)議()、文件傳輸協(xié)議(FTP)、)、網(wǎng)絡(luò)遠(yuǎn)程訪問協(xié)議(網(wǎng)絡(luò)遠(yuǎn)程訪問協(xié)議(Telnet)等。)等。 傳輸層:在此層中,它提供了節(jié)點(diǎn)間的數(shù)

4、據(jù)傳傳輸層:在此層中,它提供了節(jié)點(diǎn)間的數(shù)據(jù)傳送服務(wù),如傳輸控制協(xié)議(送服務(wù),如傳輸控制協(xié)議(TCP)、用戶數(shù)據(jù))、用戶數(shù)據(jù)報協(xié)議(報協(xié)議(UDP)等,)等,TCP和和UDP給數(shù)據(jù)包加入給數(shù)據(jù)包加入傳輸數(shù)據(jù)并把它傳輸?shù)较乱粚又?,這一層負(fù)責(zé)傳輸數(shù)據(jù)并把它傳輸?shù)较乱粚又?,這一層負(fù)責(zé)傳送數(shù)據(jù),并且確定數(shù)據(jù)已被送達(dá)并接收。傳送數(shù)據(jù),并且確定數(shù)據(jù)已被送達(dá)并接收。 互連網(wǎng)絡(luò)層:負(fù)責(zé)提供基本的數(shù)據(jù)封包傳送功互連網(wǎng)絡(luò)層:負(fù)責(zé)提供基本的數(shù)據(jù)封包傳送功能,讓每一塊數(shù)據(jù)包都能夠到達(dá)目的主機(jī)(但能,讓每一塊數(shù)據(jù)包都能夠到達(dá)目的主機(jī)(但不檢查是否被正確接收),如網(wǎng)際協(xié)議(不檢查是否被正確接收),如網(wǎng)際協(xié)議(IP)。)。

5、網(wǎng)絡(luò)接口層:對實際的網(wǎng)絡(luò)媒體的管理,定義網(wǎng)絡(luò)接口層:對實際的網(wǎng)絡(luò)媒體的管理,定義如何使用實際網(wǎng)絡(luò)(如如何使用實際網(wǎng)絡(luò)(如Ethernet、Serial Line等)等)來傳送數(shù)據(jù)。來傳送數(shù)據(jù)。下面簡單介紹下面簡單介紹TCP/IP中的幾個主要協(xié)議的功能。中的幾個主要協(xié)議的功能。1.IP協(xié)議協(xié)議 網(wǎng)際協(xié)議網(wǎng)際協(xié)議IP是是TCP/IP的心臟,也是網(wǎng)絡(luò)層中最的心臟,也是網(wǎng)絡(luò)層中最重要的協(xié)議。重要的協(xié)議。 IP層接收由更低層(網(wǎng)絡(luò)接口層例如以太網(wǎng)設(shè)層接收由更低層(網(wǎng)絡(luò)接口層例如以太網(wǎng)設(shè)備驅(qū)動程序)發(fā)來的數(shù)據(jù)包,并把該數(shù)據(jù)包發(fā)備驅(qū)動程序)發(fā)來的數(shù)據(jù)包,并把該數(shù)據(jù)包發(fā)送到更高層送到更高層TCP或或UDP層;

6、相反,層;相反,IP層也層也把從把從TCP或或UDP層接收來的數(shù)據(jù)包傳送到更低層接收來的數(shù)據(jù)包傳送到更低層。層。IP數(shù)據(jù)包是不可靠的,因為數(shù)據(jù)包是不可靠的,因為IP并沒有做任并沒有做任何事情來確認(rèn)數(shù)據(jù)包是按順序發(fā)送的或者沒有何事情來確認(rèn)數(shù)據(jù)包是按順序發(fā)送的或者沒有被破壞。被破壞。IP數(shù)據(jù)包中含有發(fā)送它的主機(jī)的地址數(shù)據(jù)包中含有發(fā)送它的主機(jī)的地址(源地址)和接收它的主機(jī)的地址(目的地(源地址)和接收它的主機(jī)的地址(目的地址)。址)。2.TCP協(xié)議協(xié)議 TCP是是Tranfer Control Protocol的簡稱,的簡稱,是一種面向連接的保證可靠傳輸?shù)膮f(xié)議。是一種面向連接的保證可靠傳輸?shù)膮f(xié)議。通

7、過通過TCP協(xié)議傳輸,得到的是一個順序協(xié)議傳輸,得到的是一個順序的無差錯的數(shù)據(jù)流。的無差錯的數(shù)據(jù)流。 如果如果IP數(shù)據(jù)包中有已經(jīng)封好的數(shù)據(jù)包中有已經(jīng)封好的TCP數(shù)據(jù)數(shù)據(jù)包,那么包,那么IP將把它們向?qū)阉鼈兿颉吧仙稀眰魉偷絺魉偷絋CP層。層。TCP將包排序并進(jìn)行錯誤檢查,將包排序并進(jìn)行錯誤檢查,同時實現(xiàn)虛電路間的連接。同時實現(xiàn)虛電路間的連接。TCP數(shù)據(jù)包數(shù)據(jù)包中包括序號和確認(rèn),所以未按照順序收中包括序號和確認(rèn),所以未按照順序收到的包可以被排序,而損壞的包可以被到的包可以被排序,而損壞的包可以被重傳。重傳。 TCP是可靠的、面向連接的、連續(xù)的、流的協(xié)是可靠的、面向連接的、連續(xù)的、流的協(xié)議。當(dāng)應(yīng)用

8、程序需要一個可靠的、點(diǎn)對點(diǎn)的連議。當(dāng)應(yīng)用程序需要一個可靠的、點(diǎn)對點(diǎn)的連接進(jìn)行通信時,就用接進(jìn)行通信時,就用TCP協(xié)議。像協(xié)議。像HTTP、FTP、Telnet等應(yīng)用程序都需要一個可靠的通等應(yīng)用程序都需要一個可靠的通信媒介。數(shù)據(jù)在網(wǎng)絡(luò)上發(fā)送和接收的次序?qū)τ谛琶浇?。?shù)據(jù)在網(wǎng)絡(luò)上發(fā)送和接收的次序?qū)τ谀芊癯晒Φ膽?yīng)用能否成功的應(yīng)用HTTP讀取讀取URL資源是很重要資源是很重要的,數(shù)據(jù)的接收次序與發(fā)送的次序必須一樣,的,數(shù)據(jù)的接收次序與發(fā)送的次序必須一樣,否則就會收到一些錯誤的信息。否則就會收到一些錯誤的信息。 對于許多應(yīng)用程序來說,這種可靠性的保證是對于許多應(yīng)用程序來說,這種可靠性的保證是能否成功傳輸信

9、息的關(guān)鍵。然而,這種可靠的能否成功傳輸信息的關(guān)鍵。然而,這種可靠的傳輸方式并非對所有的應(yīng)用程序都適合。事實傳輸方式并非對所有的應(yīng)用程序都適合。事實上,上,TCP需要花費(fèi)大量的時間和帶寬來保證可需要花費(fèi)大量的時間和帶寬來保證可靠傳輸,有一些場合可靠傳輸并不是必須的??總鬏?,有一些場合可靠傳輸并不是必須的。3.UDP協(xié)議協(xié)議 UDP是是User Datagram Protocol(用戶數(shù)據(jù)報(用戶數(shù)據(jù)報協(xié)議)的簡稱,是一種無連接的、不可靠的協(xié)協(xié)議)的簡稱,是一種無連接的、不可靠的協(xié)議,每個數(shù)據(jù)報都是一個獨(dú)立的信息,包括完議,每個數(shù)據(jù)報都是一個獨(dú)立的信息,包括完整的源地址或目的地址,它在網(wǎng)絡(luò)上以任何

10、可整的源地址或目的地址,它在網(wǎng)絡(luò)上以任何可能的路徑傳往目的地,因此能否到達(dá)目的地,能的路徑傳往目的地,因此能否到達(dá)目的地,到達(dá)目的地的時間以及內(nèi)容的正確性都是不能到達(dá)目的地的時間以及內(nèi)容的正確性都是不能被保證的。但是這個協(xié)議的速度卻比較快,所被保證的。但是這個協(xié)議的速度卻比較快,所以在現(xiàn)在網(wǎng)絡(luò)基礎(chǔ)設(shè)施越來越好的情況下,使以在現(xiàn)在網(wǎng)絡(luò)基礎(chǔ)設(shè)施越來越好的情況下,使用用UDP協(xié)議的應(yīng)用程序也越來越多了。協(xié)議的應(yīng)用程序也越來越多了。 在在 J a v a 的的 j a v a . n e t 類 庫 中 ,類 庫 中 , U R L 、URLConnection、Socket、SocketServer

11、類都類都是 利 用是 利 用 T C P 在 網(wǎng) 絡(luò) 上 通 信 的 ; 而在 網(wǎng) 絡(luò) 上 通 信 的 ; 而DatagramPacket和和DatagramServer類是使用類是使用UDP的。本章將主要講述利用的。本章將主要講述利用TCP協(xié)議進(jìn)行通協(xié)議進(jìn)行通信的各個類。信的各個類。Socket套接字套接字 網(wǎng)絡(luò)上的兩個程序通過一個雙向的通信連接實現(xiàn)數(shù)據(jù)網(wǎng)絡(luò)上的兩個程序通過一個雙向的通信連接實現(xiàn)數(shù)據(jù)的交換,這個雙向鏈路的一端稱為一個的交換,這個雙向鏈路的一端稱為一個Socket,即,即Socket是面向客戶是面向客戶/服務(wù)器模型設(shè)計的,通常用服務(wù)器模型設(shè)計的,通常用Socket來實現(xiàn)客戶方和

12、服務(wù)方的連接??蛻舫绦蚩梢韵騺韺崿F(xiàn)客戶方和服務(wù)方的連接??蛻舫绦蚩梢韵騍ocket寫請求,服務(wù)器將處理此請求,然后通過寫請求,服務(wù)器將處理此請求,然后通過Socket將結(jié)果返回給用戶。將結(jié)果返回給用戶。 Socket通信機(jī)制提供了兩種通信方式:有連接和無連通信機(jī)制提供了兩種通信方式:有連接和無連接方式,分別面向不同的應(yīng)用需求。使用有連接方式接方式,分別面向不同的應(yīng)用需求。使用有連接方式時,通信鏈路提供了可靠的,全雙工的字節(jié)流服務(wù)。時,通信鏈路提供了可靠的,全雙工的字節(jié)流服務(wù)。在該方式下,通信雙方必須創(chuàng)建一個連接過程并建立在該方式下,通信雙方必須創(chuàng)建一個連接過程并建立一條通信鏈路,以后的網(wǎng)絡(luò)通信

13、操作完全在這一對進(jìn)一條通信鏈路,以后的網(wǎng)絡(luò)通信操作完全在這一對進(jìn)程之間進(jìn)行,通信完畢則關(guān)閉此連接過程。使用無連程之間進(jìn)行,通信完畢則關(guān)閉此連接過程。使用無連接方式時其系統(tǒng)開銷比有連接方式小,但通信鏈路提接方式時其系統(tǒng)開銷比有連接方式小,但通信鏈路提供了不可靠的數(shù)據(jù)報服務(wù),不能保證信源所傳輸?shù)臄?shù)供了不可靠的數(shù)據(jù)報服務(wù),不能保證信源所傳輸?shù)臄?shù)據(jù)一定能夠到達(dá)信宿。在該方式下,通信雙方不必創(chuàng)據(jù)一定能夠到達(dá)信宿。在該方式下,通信雙方不必創(chuàng)建一個連接過程和建立一條通信鏈路,網(wǎng)絡(luò)通信操作建一個連接過程和建立一條通信鏈路,網(wǎng)絡(luò)通信操作在不同的主機(jī)和進(jìn)程之間轉(zhuǎn)發(fā)進(jìn)行。在不同的主機(jī)和進(jìn)程之間轉(zhuǎn)發(fā)進(jìn)行。端口端口 計

14、算機(jī)與網(wǎng)絡(luò)一般只有一個單獨(dú)的物理連接,計算機(jī)與網(wǎng)絡(luò)一般只有一個單獨(dú)的物理連接,所有的數(shù)據(jù)最終都要通過連接到達(dá)一個指定的所有的數(shù)據(jù)最終都要通過連接到達(dá)一個指定的計算機(jī)。然而,數(shù)據(jù)是傳向運(yùn)行在計算機(jī)上的計算機(jī)。然而,數(shù)據(jù)是傳向運(yùn)行在計算機(jī)上的不同應(yīng)用程序的,計算機(jī)需要知道數(shù)據(jù)傳向哪不同應(yīng)用程序的,計算機(jī)需要知道數(shù)據(jù)傳向哪個應(yīng)用程序,這就要用到端口。個應(yīng)用程序,這就要用到端口。 數(shù)據(jù)在網(wǎng)絡(luò)上傳送是與地址信息的傳送一起進(jìn)數(shù)據(jù)在網(wǎng)絡(luò)上傳送是與地址信息的傳送一起進(jìn)行的,地址信息表明了數(shù)據(jù)要傳向的計算機(jī)和行的,地址信息表明了數(shù)據(jù)要傳向的計算機(jī)和端口。計算機(jī)是一個端口。計算機(jī)是一個32位的位的IP地址標(biāo)識,地

15、址標(biāo)識,IP用用來把數(shù)據(jù)傳送到網(wǎng)絡(luò)上的目的計算機(jī)上。端口來把數(shù)據(jù)傳送到網(wǎng)絡(luò)上的目的計算機(jī)上。端口是用一個是用一個16位的數(shù)來表示,位的數(shù)來表示,TCP和和UDP都是通都是通過這個端口來指明數(shù)據(jù)要發(fā)往的應(yīng)用程序。過這個端口來指明數(shù)據(jù)要發(fā)往的應(yīng)用程序。 在面向連接的通信中,一個應(yīng)用程序與另一個在面向連接的通信中,一個應(yīng)用程序與另一個應(yīng)用程序的連接的建立是通過把一個端口號綁應(yīng)用程序的連接的建立是通過把一個端口號綁定在套接字上實現(xiàn)的。這樣就把應(yīng)用程序注冊定在套接字上實現(xiàn)的。這樣就把應(yīng)用程序注冊在操作系統(tǒng)中,從指定的端口接收所有的數(shù)據(jù)。在操作系統(tǒng)中,從指定的端口接收所有的數(shù)據(jù)。運(yùn)行在同一臺計算機(jī)上的兩個

16、應(yīng)用程序不可能運(yùn)行在同一臺計算機(jī)上的兩個應(yīng)用程序不可能綁定在同一個端口上,如果應(yīng)用程序試圖綁定綁定在同一個端口上,如果應(yīng)用程序試圖綁定在一個已經(jīng)在使用中的端口上將導(dǎo)致失敗。在在一個已經(jīng)在使用中的端口上將導(dǎo)致失敗。在面向消息的通信中,數(shù)據(jù)報包含了目的地的端面向消息的通信中,數(shù)據(jù)報包含了目的地的端口號??谔?。TCP和和UDP協(xié)議是利用端口把流入的數(shù)協(xié)議是利用端口把流入的數(shù)據(jù)映射到運(yùn)行的計算機(jī)上的特定進(jìn)程。據(jù)映射到運(yùn)行的計算機(jī)上的特定進(jìn)程。 端口號是從端口號是從0到到65535(因為端口是用(因為端口是用16位二進(jìn)位二進(jìn)制數(shù)表示),其中制數(shù)表示),其中01023的端口號被系統(tǒng)保的端口號被系統(tǒng)保留,它

17、們被許多知名的服務(wù)占據(jù),如留,它們被許多知名的服務(wù)占據(jù),如HTTP、FTP和其他的系統(tǒng)服務(wù),應(yīng)用程序不能綁定這和其他的系統(tǒng)服務(wù),應(yīng)用程序不能綁定這些端口。些端口。URL URL(Uniform Resource Locator)是統(tǒng)一資源定位符)是統(tǒng)一資源定位符的簡稱,它表明了的簡稱,它表明了Internet上某一資源的地址。通過上某一資源的地址。通過URL,可以訪問,可以訪問Internet和和WWW。瀏覽器通過解析給。瀏覽器通過解析給定的定的URL可以在網(wǎng)絡(luò)上查找相應(yīng)的文件或網(wǎng)絡(luò)資源??梢栽诰W(wǎng)絡(luò)上查找相應(yīng)的文件或網(wǎng)絡(luò)資源。IP地址定位了在互連網(wǎng)上的一臺計算機(jī),端口定義了地址定位了在互連網(wǎng)上

18、的一臺計算機(jī),端口定義了為這臺計算機(jī)上提供的服務(wù)。一個為這臺計算機(jī)上提供的服務(wù)。一個URL的語法格式如的語法格式如下:下: :/dir/filename protocol定義了傳輸協(xié)議,如定義了傳輸協(xié)議,如http、ftp、gopher、file等等;等等;hostname為主機(jī)域名或為主機(jī)域名或IP地址;地址;port為服務(wù)端為服務(wù)端口號;口號;dir和和filename分別為服務(wù)器上的目錄和文件名。分別為服務(wù)器上的目錄和文件名。URL具有強(qiáng)大的功能,它提供了統(tǒng)一的方法來存儲與具有強(qiáng)大的功能,它提供了統(tǒng)一的方法來存儲與單個類中的一個特定資源進(jìn)行通信所需的全部信息;單個類中的一個特定資源進(jìn)行通

19、信所需的全部信息;完成所有完成所有socket的創(chuàng)建、握手協(xié)議以及通過的創(chuàng)建、握手協(xié)議以及通過HTTP檢索檢索資源所需的解釋程序。資源所需的解釋程序。Java語言提供了類語言提供了類.URL來實現(xiàn)利用來實現(xiàn)利用URL進(jìn)行網(wǎng)進(jìn)行網(wǎng)絡(luò)編程。該類具有絡(luò)編程。該類具有4個構(gòu)造器及其相應(yīng)的方法。利用構(gòu)造個構(gòu)造器及其相應(yīng)的方法。利用構(gòu)造器創(chuàng)建了器創(chuàng)建了URL對象后,對象后,Java提供了提供了2種方式來讀取網(wǎng)絡(luò)數(shù)種方式來讀取網(wǎng)絡(luò)數(shù)據(jù),一種是通過據(jù),一種是通過URL對象及相關(guān)方法直接得到相關(guān)的網(wǎng)對象及相關(guān)方法直接得到相關(guān)的網(wǎng)絡(luò)信息,首先創(chuàng)建一個絡(luò)信息,首先創(chuàng)建一個URL對象,然后使用對象,然后使用URL的方

20、法的方法openStream()與指定的與指定的URL建立連接并得到一個輸入流建立連接并得到一個輸入流InputStream類的對象,在此基礎(chǔ)上可進(jìn)一步生成其它的類的對象,在此基礎(chǔ)上可進(jìn)一步生成其它的輸入流對象實例,進(jìn)而對信息進(jìn)行操作;這種方法簡單輸入流對象實例,進(jìn)而對信息進(jìn)行操作;這種方法簡單直接,但缺乏靈活性,并且只能夠讀信息,因為許多直接,但缺乏靈活性,并且只能夠讀信息,因為許多Web提供了雙向?qū)υ挼墓δ?,因而就限制了這種方法的提供了雙向?qū)υ挼墓δ?,因而就限制了這種方法的應(yīng)用。另一種是通過方法應(yīng)用。另一種是通過方法openConnection()生成相應(yīng)的生成相應(yīng)的URLConnecti

21、on對象,從而得到對象,從而得到InputStream輸入流或輸入流或InputStream對象,進(jìn)而對其進(jìn)行讀寫操作。這種方法應(yīng)對象,進(jìn)而對其進(jìn)行讀寫操作。這種方法應(yīng)用相當(dāng)廣泛,如向服務(wù)器的用相當(dāng)廣泛,如向服務(wù)器的CGI程序發(fā)送一些數(shù)據(jù),首程序發(fā)送一些數(shù)據(jù),首先必須與先必須與URL建立連接,然后對其進(jìn)行讀寫操作,利用建立連接,然后對其進(jìn)行讀寫操作,利用URLConnection類提供的公用方法除了可以簡單地訪問類提供的公用方法除了可以簡單地訪問網(wǎng)絡(luò)資源外,還可以訪問某些協(xié)議提供的有關(guān)資源,如網(wǎng)絡(luò)資源外,還可以訪問某些協(xié)議提供的有關(guān)資源,如資源的資源的MIME類型(類型(Multimedia

22、Internet Mail Extensions,多用途,多用途Internet郵件擴(kuò)展)、資源的更改時郵件擴(kuò)展)、資源的更改時間等。間等。11.2 使用使用URL獲取網(wǎng)絡(luò)資源獲取網(wǎng)絡(luò)資源 URL類類 在在Java的的包中,包含一些用于網(wǎng)絡(luò)編包中,包含一些用于網(wǎng)絡(luò)編程的類,其中程的類,其中URL類可以很方便地利用類可以很方便地利用URL地地址在址在Internet上進(jìn)行網(wǎng)絡(luò)通信并獲取網(wǎng)絡(luò)資源。上進(jìn)行網(wǎng)絡(luò)通信并獲取網(wǎng)絡(luò)資源。 URL對象是只寫一次的對象,一旦創(chuàng)建了一個對象是只寫一次的對象,一旦創(chuàng)建了一個URL對象,就不能再改變它的任何屬性(協(xié)議、對象,就不能再改變它的任何屬性(協(xié)議、主機(jī)名、文件

23、名和端口號)。為了表示主機(jī)名、文件名和端口號)。為了表示URL,中實現(xiàn)了類中實現(xiàn)了類URL??梢酝ㄟ^下面的構(gòu)??梢酝ㄟ^下面的構(gòu)造方法來初始化一個造方法來初始化一個URL對象:對象:構(gòu)造方法一:構(gòu)造方法一:public URL (String spec); 該構(gòu)造方法通過一個表示該構(gòu)造方法通過一個表示URL地址的字符串可以構(gòu)造地址的字符串可以構(gòu)造一個一個URL對象。例如:對象。例如: URL urlBase=new URL(http:/ ;構(gòu)造方法二:構(gòu)造方法二:public URL(URL context, String spec); 該構(gòu)造方法通過絕對該構(gòu)造方法通過絕對URL和相對和相對UR

24、L構(gòu)造一個構(gòu)造一個URL對對象。例如:象。例如: URL com163 = new URL (http:/ URL index163 = new URL(com163, index.html);構(gòu)造方法三:構(gòu)造方法三:public URL(String protocol, String host, String file);例如:例如: URL com163 = new URL(http, , /pages/net. html);構(gòu)造方法四:構(gòu)造方法四:public URL(String protocol, String host, int port, String file); 例如:例如:

25、 URL gamelan = new URL(http, , 80, Pages/net.html);注意:類注意:類URL的構(gòu)造方法都聲明拋棄非運(yùn)行時異的構(gòu)造方法都聲明拋棄非運(yùn)行時異常(常(MalformedURLException),因此生成),因此生成URL對象時,必須要對這一異常進(jìn)行處理,通對象時,必須要對這一異常進(jìn)行處理,通常是用常是用try-catch語句進(jìn)行捕獲。格式如下:語句進(jìn)行捕獲。格式如下:tryURL myURL= new URL()catch (MalformedURLException e) URL類提供了多個方法進(jìn)行類提供了多個方法進(jìn)行URL對象的查詢,可以使對象的

26、查詢,可以使用這些方法來獲取用這些方法來獲取URL的屬性信息,其中常用的方法的屬性信息,其中常用的方法有:有:getProtocol():返回:返回URL的協(xié)議標(biāo)識部分;的協(xié)議標(biāo)識部分;getHost():返回:返回URL的主機(jī)名部分;的主機(jī)名部分;getPort():將端口號作為整數(shù)返回,如沒有設(shè)置則返回:將端口號作為整數(shù)返回,如沒有設(shè)置則返回-1;getPath():返回該:返回該URL的路徑;的路徑;getFile():返回:返回URL的文件名部分;的文件名部分;getRef():返回:返回URL的引用部分。的引用部分。 當(dāng)然,并不是所有的當(dāng)然,并不是所有的URL地址都包括這些組成部分。

27、地址都包括這些組成部分。URL類提供這些方法是因為類提供這些方法是因為HTTP的的URL包括這些部包括這些部分,而分,而HTTP的的URL差不多是最通用的差不多是最通用的URL。從某種。從某種程序上講,程序上講,URL類是以類是以HTTP為中心的。無論使用什為中心的。無論使用什么構(gòu)造函數(shù)來創(chuàng)建么構(gòu)造函數(shù)來創(chuàng)建URL對象,都可以使用這些方法來對象,都可以使用這些方法來獲取該獲取該URL對象的信息。例對象的信息。例11.1描述了描述了URL類的基本類的基本用法。用法。例例 URL類的基本用法舉例。類的基本用法舉例。import .URL; /引入引入URL類類import .MalformedUR

28、LException; /引入引入包中的異常類包中的異常類class URLDemo public static void main(String args) URL sampleURL = null; try sampleURL = new URL(http:/:80/index.html#down); /創(chuàng)建創(chuàng)建URL對象對象 catch(MalformedURLException e) /異常處理異常處理 e.printStackTrace(); /顯示顯示sampleURL對象的各屬性值對象的各屬性值 System.out.println(協(xié)議:協(xié)議: +sampleURL.getPr

29、otocol(); System.out.println(主機(jī)名:主機(jī)名:+sampleURL.getHost(); System.out.println(端口號:端口號:+sampleURL.getPort(); System.out.println(文件名:文件名:+sampleURL.getFile(); System.out.println(錨點(diǎn):錨點(diǎn): +sampleURL.getRef(); 這是一個這是一個Java應(yīng)用程序。運(yùn)行結(jié)果輸出應(yīng)用程序。運(yùn)行結(jié)果輸出URL地址的各地址的各屬性值,因為屬性值,因為URL沒有參考點(diǎn),輸出為沒有參考點(diǎn),輸出為null。運(yùn)行結(jié)。運(yùn)行結(jié)果為:果為:

30、協(xié)議:協(xié)議: http主機(jī)名:主機(jī)名:端口號:端口號:80文件名:文件名:/index.html錨點(diǎn):錨點(diǎn): down獲取圖像獲取圖像 Java Applet可以直接從網(wǎng)絡(luò)上結(jié)點(diǎn)獲取圖像并可以直接從網(wǎng)絡(luò)上結(jié)點(diǎn)獲取圖像并顯示出來。顯示出來。 為了了解其編程方法和從本地顯示為了了解其編程方法和從本地顯示圖像的編程有何不同,先不考慮網(wǎng)絡(luò)功能,來圖像的編程有何不同,先不考慮網(wǎng)絡(luò)功能,來看一個以前學(xué)習(xí)過的簡單的圖像顯示的例子:看一個以前學(xué)習(xí)過的簡單的圖像顯示的例子: 例例11.2 獲取并顯示圖像舉例。獲取并顯示圖像舉例。import java.applet.*;import java.awt.*;pub

31、lic class Li11_02 extends Applet Image image; public void init() image=getImage(getDocumentBase(),swan.gif); public void paint(Graphics g) g.drawImage(image, 0, 0,this); 這是一個獲取并顯示圖像的簡單例子,在該例這是一個獲取并顯示圖像的簡單例子,在該例中,先用中,先用getImage()方法從方法從HTML文檔所在位文檔所在位置調(diào)用圖像置調(diào)用圖像swan.gif,并由此生成一個,并由此生成一個Image類類型的對象型的對象ima

32、ge,然后用,然后用drawImage(image,0,0,this)在屏幕上將圖像顯在屏幕上將圖像顯示出來。示出來。 如果想從網(wǎng)絡(luò)上其他結(jié)點(diǎn)獲取圖像,關(guān)鍵是創(chuàng)如果想從網(wǎng)絡(luò)上其他結(jié)點(diǎn)獲取圖像,關(guān)鍵是創(chuàng)建對應(yīng)于網(wǎng)絡(luò)上其他結(jié)點(diǎn)的建對應(yīng)于網(wǎng)絡(luò)上其他結(jié)點(diǎn)的Image類型的對象,類型的對象,一旦獲得一旦獲得Image類型的對象,便可以對其進(jìn)行類型的對象,便可以對其進(jìn)行任何可能的圖像操作。任何可能的圖像操作。Java提供了提供了getImage(new URL(字符串字符串)方法可以創(chuàng)建對應(yīng)方法可以創(chuàng)建對應(yīng)于其他結(jié)點(diǎn)的圖像于其他結(jié)點(diǎn)的圖像,其使用格式可有兩種:其使用格式可有兩種: String url =

33、 結(jié)點(diǎn)結(jié)點(diǎn)URL; Image image; try image = getImage(new URL(url); catch(Exception e)System.out.println(不能打開這個不能打開這個URL地址地址 ); 或或URL imgur = null;Image image;try imgur = new URL(結(jié)點(diǎn)結(jié)點(diǎn)URL ); catch (MalformedURLException e) System.out.println(不能打開這個不能打開這個URL地址地址 ); image=getImage(imgur); 前一種格式用前一種格式用“new URL(ur

34、l)”生成生成URL對象,并直對象,并直接作為接作為getImage的參數(shù),后一種格式先用的參數(shù),后一種格式先用“new URL(url)”生成一個生成一個 URL對象,再傳給對象,再傳給getImage。兩。兩種格式本質(zhì)上是一樣的。兩種格式中,生成種格式本質(zhì)上是一樣的。兩種格式中,生成URL對象對象的部分都包含在的部分都包含在try/獲取獲取URL對象對象 catch (MalformedURLException e) /出錯提示出錯提示 之中。之中。 例如要調(diào)用例如要調(diào)用/java/automain.jpg結(jié)點(diǎn)結(jié)點(diǎn)的圖像,第一種格式的完整實現(xiàn)見例的圖像

35、,第一種格式的完整實現(xiàn)見例11.3源程序。第源程序。第二種格式的完整實現(xiàn)見例二種格式的完整實現(xiàn)見例11.4的源代碼。說明:例的源代碼。說明:例11.3至至11.8編譯后需要把編譯后需要把.class文件和相應(yīng)的文件和相應(yīng)的.htm文件放入文件放入站點(diǎn)中的相應(yīng)虛擬目錄才可顯示出效果。對于沒有服站點(diǎn)中的相應(yīng)虛擬目錄才可顯示出效果。對于沒有服務(wù)器或不能上網(wǎng)的讀者,也可以在自己的計算機(jī)上通務(wù)器或不能上網(wǎng)的讀者,也可以在自己的計算機(jī)上通過安裝微軟的過安裝微軟的IIS或或PWS(Windows98用戶)建立一臺用戶)建立一臺WEB服務(wù)器進(jìn)行測試,服務(wù)器建立后,把上面的程序服務(wù)器進(jìn)行測試,服務(wù)器建立后,把上

36、面的程序放入放入WEB服務(wù)器相應(yīng)目錄中,然后把例題中的域名換服務(wù)器相應(yīng)目錄中,然后把例題中的域名換成成即可。即可。 例例11.3 顯示網(wǎng)絡(luò)結(jié)點(diǎn)上的圖像。顯示網(wǎng)絡(luò)結(jié)點(diǎn)上的圖像。/Li11_03.javaimport java.applet.*;import .*;import java.awt.*;public class Li11_03 extends Applet Image image; public void init() String url=/java/automain.jpg;/請按請按實際情況更改站點(diǎn)的域名實際情

37、況更改站點(diǎn)的域名 try image = getImage(new URL(url); catch(Exception e) public void paint(Graphics g) g.drawImage(image, 0, 0,this); 例例11.4 顯示網(wǎng)絡(luò)結(jié)點(diǎn)上的圖像。顯示網(wǎng)絡(luò)結(jié)點(diǎn)上的圖像。/Li11_04.javaimport java.applet.*;import .*;import java.awt.*;public class Li11_04 extends Applet Image image; URL imgur=null; public void init() t

38、ry imgur=new URL(/java/automain.jpg);/請按實請按實際情況更改站點(diǎn)的域名際情況更改站點(diǎn)的域名 catch (MalformedURLException e) System.out.println(不能打開該不能打開該URL地址。地址。); image=getImage(imgur); public void paint(Graphics g) g.drawImage(image, 0, 0,this); 將上述兩個程序分別以將上述兩個程序分別以Li11_03.java和和Li11_04. java存盤并把存盤并把URL地

39、址更改為自己服務(wù)器的圖地址更改為自己服務(wù)器的圖像文件的地址,執(zhí)行像文件的地址,執(zhí)行javac Li11_03.java和和javac L i 11 _ 0 4 . j a v a , 將 得 到 編 譯 后 生 成 的, 將 得 到 編 譯 后 生 成 的Li11_03.class和和Li11_04.class,最后創(chuàng)建調(diào)用這,最后創(chuàng)建調(diào)用這兩個兩個Java Applet的的HTML文檔。文檔。 將將 . c l a s s 和和 . h t m 程 序 放 入程 序 放 入 We b 服 務(wù) 器服 務(wù) 器()并用并用IE打開,便可以看到打開,便可以看到Java Ap

40、plet 所顯示的從網(wǎng)絡(luò)上獲得的圖像了。不過,所顯示的從網(wǎng)絡(luò)上獲得的圖像了。不過,在在Applet程序中一般很少采用絕對程序中一般很少采用絕對URL,因為,因為出于安全性的考慮,瀏覽器只允許出于安全性的考慮,瀏覽器只允許Applet訪問訪問與與Applet同一主機(jī)的資源。如果采用絕對同一主機(jī)的資源。如果采用絕對URL,則當(dāng)則當(dāng)Applet放到其他的放到其他的Web服務(wù)器上運(yùn)行時,服務(wù)器上運(yùn)行時,必須修改程序。必須修改程序。獲取聲音獲取聲音 Java從網(wǎng)絡(luò)上獲取聲音文件并播放聲音的編程從網(wǎng)絡(luò)上獲取聲音文件并播放聲音的編程方法有兩種,第一種是利用方法有兩種,第一種是利用Java提供的提供的play

41、(URL1)及及play(URL1,String1) 直接播放網(wǎng)直接播放網(wǎng)絡(luò) 上 的 聲 音 文 件 , 另 一 種 是 通 過絡(luò) 上 的 聲 音 文 件 , 另 一 種 是 通 過getAudioClip(URL)或或getAudioClip(URL, String)先從網(wǎng)絡(luò)上獲取聲音文件,并生成先從網(wǎng)絡(luò)上獲取聲音文件,并生成AudioClip 類型的對象,然后對該對象進(jìn)行操類型的對象,然后對該對象進(jìn)行操作。第一種方法實現(xiàn)可以用如下代碼:作。第一種方法實現(xiàn)可以用如下代碼:String Audur = 結(jié)點(diǎn)結(jié)點(diǎn)URL;try play(new URL(Audur); /或或play(new U

42、RL(Audur),聲聲音文件名音文件名); catch(Exception e) 第二種方法實現(xiàn)可以用如下代碼:第二種方法實現(xiàn)可以用如下代碼:String Audur = 結(jié)點(diǎn)結(jié)點(diǎn)URL;AudioClip loopClip;try loopClip = getAudioClip(new URL(Audur); /或或loopClip = getAudioClip(new URL(Audur) ,聲音文件名聲音文件名); catch(Exception e)System.out.println(不能打開這個不能打開這個URL地址。地址。); 上面的兩種格式都是將生成上面的兩種格式都是將生成U

43、RL對象部分對象部分“new URL(url)”直接作為直接作為play或或getAudioClip的參數(shù);和前面處理圖像的例子一樣,也可以的參數(shù);和前面處理圖像的例子一樣,也可以先用先用“new URL(url)”獲取一個獲取一個URL對象,再對象,再傳給傳給 play 或或getAudioClip。如對第一種。如對第一種play(URL)的格式,也可采用如下的編程格式:的格式,也可采用如下的編程格式:URL Audur =null;try Audur=new URL(結(jié)點(diǎn)結(jié)點(diǎn)URL ); catch(Exception e)System.out.println(不能打開該不能打開該URL地

44、址。地址。);play(Audur);獲取文檔獲取文檔 利用利用Java提供的提供的getAppletContext().showDoc ument()方法可以顯示方法可以顯示W(wǎng)eb服務(wù)器結(jié)點(diǎn)的服務(wù)器結(jié)點(diǎn)的HTML文檔,在調(diào)用這個方法之前首先需要指文檔,在調(diào)用這個方法之前首先需要指定文檔的網(wǎng)絡(luò)資源的定文檔的網(wǎng)絡(luò)資源的URL。其兩種格式如下:。其兩種格式如下:void showDocument(URL url);void showDocument(URL url, String target); 第一種格式在當(dāng)前窗口中打開指定的網(wǎng)頁文件,第一種格式在當(dāng)前窗口中打開指定的網(wǎng)頁文件,第二種格式在指定

45、的窗口中打開指定的網(wǎng)頁文第二種格式在指定的窗口中打開指定的網(wǎng)頁文件。同前面的顯示網(wǎng)絡(luò)上其他結(jié)點(diǎn)的資源一樣,件。同前面的顯示網(wǎng)絡(luò)上其他結(jié)點(diǎn)的資源一樣,獲取文檔也有兩種編程方式,例獲取文檔也有兩種編程方式,例11.7和例和例11.8分別演示了分別演示了showDocument()方法的使用。方法的使用。 例例11.7 獲取并顯示網(wǎng)絡(luò)結(jié)點(diǎn)上的文檔資源。獲取并顯示網(wǎng)絡(luò)結(jié)點(diǎn)上的文檔資源。import java.applet.*;import java.awt.*;import .*;public class Li11_07 extends Applet URL docur= null; public v

46、oid paint(Graphics g) try docur=new URL(/java/index.htm); /請根據(jù)實際情況更改站點(diǎn)域名請根據(jù)實際情況更改站點(diǎn)域名 catch (MalformedURLException e) System.out.println(不能打開該不能打開該URL地址。地址。); if (docur != null) getAppletContext().showDocument(docur); 例例11.8 獲取并顯示網(wǎng)絡(luò)結(jié)點(diǎn)上的文檔資源。獲取并顯示網(wǎng)絡(luò)結(jié)點(diǎn)上的文檔資源。import java.applet.*;imp

47、ort java.awt.*;import .*;public class Li11_08 extends Applet URL docur= null; public void paint(Graphics g) try getAppletContext().showDocument(new URL(/java/index.htm); catch (MalformedURLException e) System.out.println(不能打開該不能打開該URL地址。地址。); /paint()上面的兩個程序只是利用上面的兩個程序只是利用showDocm

48、ent()方法方法顯示網(wǎng)上的顯示網(wǎng)上的HTML文檔,但并不能對其內(nèi)容文檔,但并不能對其內(nèi)容進(jìn)行處理。實際上,進(jìn)行處理。實際上,Java還可以讀取網(wǎng)絡(luò)上還可以讀取網(wǎng)絡(luò)上文件的內(nèi)容,并對其內(nèi)容進(jìn)行處理。文件的內(nèi)容,并對其內(nèi)容進(jìn)行處理。Java讀取并處理網(wǎng)絡(luò)上文件內(nèi)容的步驟如下:讀取并處理網(wǎng)絡(luò)上文件內(nèi)容的步驟如下:(1)創(chuàng)建一個創(chuàng)建一個URL類型的對象。例如:類型的對象。例如: URL fileurl = new URL(url);(2)利用利用URL類的類的openStream( )方法獲得對應(yīng)的方法獲得對應(yīng)的InputStream類的對象。例如:類的對象。例如: InputStream file

49、con = fileurl.openStream( );(3)將將InputStream對象轉(zhuǎn)化為對象轉(zhuǎn)化為DataInput Stream類的對象。例如:類的對象。例如: DataInputStream filedata = new DataInputStream(filecon);(4)讀取內(nèi)容并處理。例如,對上面的讀取內(nèi)容并處理。例如,對上面的filedata,可用,可用filedata.readLine一行一一行一行讀取內(nèi)容或用行讀取內(nèi)容或用filedata.readchar一個一個字符一個字符地讀取,讀取后可使用字符一個字符地讀取,讀取后可使用java語句對其進(jìn)行處理并輸出。語句對其

50、進(jìn)行處理并輸出。對于讀取并處理網(wǎng)上對于讀取并處理網(wǎng)上HTML文件內(nèi)容的文件內(nèi)容的程序,請讀者根據(jù)以上說明步驟,自己程序,請讀者根據(jù)以上說明步驟,自己編寫一個小程序。編寫一個小程序。11.3 使用使用TCP協(xié)議的協(xié)議的Socket編程編程 Socket套接字套接字 對于超出了對于超出了URL類所提供的連網(wǎng)應(yīng)用程序,類所提供的連網(wǎng)應(yīng)用程序,Java提供了套接口類(提供了套接口類(Socket)和服務(wù)套接口)和服務(wù)套接口類(類(ServerSocket)作為標(biāo)準(zhǔn)的)作為標(biāo)準(zhǔn)的TCP套接口編套接口編程技術(shù),通過它們可以實現(xiàn)主機(jī)與主機(jī)之間的程技術(shù),通過它們可以實現(xiàn)主機(jī)與主機(jī)之間的對話。對話。 使用使用S

51、ocket進(jìn)行進(jìn)行Client/Server程序設(shè)計的一般程序設(shè)計的一般連接過程是這樣的:連接過程是這樣的:Server端端Listen(監(jiān)聽監(jiān)聽)某個某個端口是否有連接請求,端口是否有連接請求,Client端向端向Server端發(fā)端發(fā)出出Connect(連接連接)請求,請求,Server端向端向Client端發(fā)端發(fā)回回Accept(接受)消息,一個連接就建立起來(接受)消息,一個連接就建立起來了。了。Server端和端和Client端都可以通過套接口類端都可以通過套接口類提供的一些方法與對方通信。提供的一些方法與對方通信。 對于一個功能齊全的對于一個功能齊全的Socket,都要包含,都要包含

52、以下基本結(jié)構(gòu),其工作過程包含以下四以下基本結(jié)構(gòu),其工作過程包含以下四個基本的步驟:個基本的步驟:1.創(chuàng)建創(chuàng)建Socket;2.打開連接到打開連接到Socket的輸入的輸入/輸出流;輸出流;3.按照一定的協(xié)議對按照一定的協(xié)議對Socket進(jìn)行讀進(jìn)行讀/寫操作;寫操作;4.關(guān)閉關(guān)閉Socket。 Java在在包中提供了兩個類包中提供了兩個類Socket和和ServerSocket,分別用來表示雙向連接,分別用來表示雙向連接的客戶端和服務(wù)端創(chuàng)建、管理通信。這的客戶端和服務(wù)端創(chuàng)建、管理通信。這是兩個封裝得非常好的類,使用很方便。是兩個封裝得非常好的類,使用很方便。其構(gòu)造方法如下:其構(gòu)造方法如下: So

53、cket(); Socket(InetAddress address, int port); Socket(InetAddress address, int port, boolean stream); Socket(String host, int prot); Socket(String host, int prot, boolean stream); Socket(SocketImpl impl); Socket(String host, int port, InetAddress localAddr, int localPort); Socket(InetAddress address

54、, int port, InetAddress localAddr, int localPort); ServerSocket(); ServerSocket(int port); ServerSocket(int port, int backlog); ServerSocket(int port, int backlog, InetAddress bindAddr); 其中其中address、host和和port分別是雙向連分別是雙向連接中一方的接中一方的IP地址、主機(jī)名和端口號,地址、主機(jī)名和端口號,stream指明指明socket是流是流socket還是數(shù)據(jù)報還是數(shù)據(jù)報socket,lo

55、calPort表示本地主機(jī)的端口號,表示本地主機(jī)的端口號,localAddr和和bindAddr是本地機(jī)器的地址是本地機(jī)器的地址(ServerSocket的主機(jī)地址),的主機(jī)地址),impl是是s o c k e t 的 父 類 , 既 可 以 用 來 創(chuàng) 建的 父 類 , 既 可 以 用 來 創(chuàng) 建serverSocket又可以用來創(chuàng)建又可以用來創(chuàng)建Socket。例。例如:如:Socket client = new Socket(127.0.01., 8088);ServerSocket server = new ServerSocket(8088); 注意:在選擇端口時,必須小心。每一個端

56、口注意:在選擇端口時,必須小心。每一個端口提供一種特定的服務(wù),只有給出正確的端口,提供一種特定的服務(wù),只有給出正確的端口,才能獲得相應(yīng)的服務(wù)。才能獲得相應(yīng)的服務(wù)。01023的端口號為系統(tǒng)的端口號為系統(tǒng)所保留,例如所保留,例如http服務(wù)的端口號為服務(wù)的端口號為80,telnet服服務(wù)的端口號為務(wù)的端口號為21,ftp服務(wù)的端口號為服務(wù)的端口號為23, 所以在所以在選擇端口號時,最好選擇一個大于選擇端口號時,最好選擇一個大于1023的數(shù)以的數(shù)以防止發(fā)生沖突。防止發(fā)生沖突。 在創(chuàng)建在創(chuàng)建socket時如果發(fā)生錯誤 , 將 產(chǎn) 生時如果發(fā)生錯誤 , 將 產(chǎn) 生IOException,在程序中必須對之

57、做出處理。,在程序中必須對之做出處理。所以在創(chuàng)建所以在創(chuàng)建Socket或或ServerSocket是必須捕獲是必須捕獲或拋出例外?;驋伋隼?。 在使用在使用Socket和和ServerSocket類構(gòu)造完對象后,類構(gòu)造完對象后,就可以使用它們提供的方法來實現(xiàn)端口的套接就可以使用它們提供的方法來實現(xiàn)端口的套接等功能。其中等功能。其中Socket類提供的主要方法有以下類提供的主要方法有以下幾種:幾種: getInputStream():返回此套接口鏈接地址的輸入:返回此套接口鏈接地址的輸入流。流。 getInetAddress():返回此套接口鏈接的地址對象。:返回此套接口鏈接的地址對象。 get

58、LocalAddress():返回套接口本地的地址對象。:返回套接口本地的地址對象。 getLocalPort():返回套接口本地的地址端口。:返回套接口本地的地址端口。 getOutputStream():返回此套接口鏈接地址的輸出:返回此套接口鏈接地址的輸出流。流。 getPort():返回此套接口鏈接地址的端口。:返回此套接口鏈接地址的端口。 setSoTimeOut():設(shè)置套接口的有效期限值。:設(shè)置套接口的有效期限值。 toString():返回套接口字符串。:返回套接口字符串。 close():關(guān)閉套接口。:關(guān)閉套接口。 isClosed():判斷此套接口是否關(guān)閉。:判斷此套接口是

59、否關(guān)閉。 isConnected():判斷此套接口是否斷開。:判斷此套接口是否斷開。 shutdownInput():關(guān)閉套接口的輸入流。:關(guān)閉套接口的輸入流。 shutdownOutput():關(guān)閉套接口的輸出流。:關(guān)閉套接口的輸出流。 ServerSocket類提供的主要方法有以下幾種:類提供的主要方法有以下幾種: accept():返回與服務(wù)器端建立連接的機(jī)器套接口。:返回與服務(wù)器端建立連接的機(jī)器套接口。 getChannel():返回服務(wù)套接口通道。:返回服務(wù)套接口通道。 getInetAddress():返回本機(jī)的地址對象。:返回本機(jī)的地址對象。 getLocalPort():返回服

60、務(wù)器所綁定的監(jiān)聽端口號。:返回服務(wù)器所綁定的監(jiān)聽端口號。 getSoTimeout():返回服務(wù)套接口限制的時間數(shù)。:返回服務(wù)套接口限制的時間數(shù)。 setSoTimeout(int timeout):設(shè)定服務(wù)套接口所需:設(shè)定服務(wù)套接口所需等到的時間限度。等到的時間限度。 toString():返回服務(wù)套接口字符串。:返回服務(wù)套接口字符串。 close():關(guān)閉服務(wù)套接口。:關(guān)閉服務(wù)套接口。 isClosed():判斷服務(wù)套接口是否關(guān)閉。:判斷服務(wù)套接口是否關(guān)閉。一對一的一對一的Socket C/S通信通信 TCP是一種可靠的、基于連接的網(wǎng)絡(luò)協(xié)議,在是一種可靠的、基于連接的網(wǎng)絡(luò)協(xié)議,在Inter

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論