《Java網(wǎng)絡(luò)程序設(shè)計》課件-第1章_第1頁
《Java網(wǎng)絡(luò)程序設(shè)計》課件-第1章_第2頁
《Java網(wǎng)絡(luò)程序設(shè)計》課件-第1章_第3頁
《Java網(wǎng)絡(luò)程序設(shè)計》課件-第1章_第4頁
《Java網(wǎng)絡(luò)程序設(shè)計》課件-第1章_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章緒論

1.1計算機(jī)網(wǎng)絡(luò)1.2網(wǎng)絡(luò)編程1.3Java與網(wǎng)絡(luò)編程

1.1計?算?機(jī)?網(wǎng)?絡(luò)

1.1.1計算機(jī)網(wǎng)絡(luò)的概念

計算機(jī)網(wǎng)絡(luò)是通過電纜、電話線或無線通信將兩臺以上的計算機(jī)互連起來構(gòu)成的集合,其準(zhǔn)確定義是:由若干臺擁有獨立處理能力的計算機(jī),通過通信設(shè)備連接,且在通信軟件支持下可實現(xiàn)信息傳輸與交換的系統(tǒng)集合。其簡單的定義是:一些互相連接的、自治的計算機(jī)的集合。最簡單的網(wǎng)絡(luò)由兩臺計算機(jī)設(shè)備構(gòu)成,進(jìn)行兩點一線的通信;最龐大的網(wǎng)絡(luò)是由多個計算機(jī)網(wǎng)絡(luò)通過路由器等網(wǎng)絡(luò)設(shè)備連接而成的因特網(wǎng),因此因特網(wǎng)也被稱為“網(wǎng)絡(luò)的網(wǎng)絡(luò)”,如圖1-1所示。圖1-1互聯(lián)網(wǎng)1.1.2TCP/IP體系結(jié)構(gòu)

計算機(jī)網(wǎng)絡(luò)由多個互連的網(wǎng)絡(luò)節(jié)點組成,節(jié)點之間要不斷地交換數(shù)據(jù)和控制信息,就必須做到有條不紊地交換數(shù)據(jù),并遵循一整套合理而嚴(yán)謹(jǐn)?shù)慕Y(jié)構(gòu)化管理體系。計算機(jī)網(wǎng)絡(luò)是按照高度結(jié)構(gòu)化設(shè)計方法,采用功能分層的原理來實現(xiàn)的,網(wǎng)絡(luò)體系(NetworkArchitecture)為了完成計算機(jī)間的通信合作,把每臺計算機(jī)互連的功能劃分成有明確定義的層次,并規(guī)定了同層次進(jìn)程通信的協(xié)議及相鄰層次之間的接口與服務(wù),從而形成網(wǎng)絡(luò)體系。不同廠家生產(chǎn)的計算機(jī)系統(tǒng)以及不同網(wǎng)絡(luò)之間要實現(xiàn)數(shù)據(jù)通信,就必須遵循相同的網(wǎng)絡(luò)體系結(jié)構(gòu)模型,否則異種計算機(jī)就無法連接成網(wǎng)絡(luò),這種共同遵循的網(wǎng)絡(luò)體系結(jié)構(gòu)模型就是國際標(biāo)準(zhǔn)——開放系統(tǒng)互連參考模型(OpenSystemInterface/ReferenceModel,OSI/RM),這是一種七層的體系結(jié)構(gòu)。在Internet中,網(wǎng)絡(luò)通信協(xié)議使用的是傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議(TransmissionControlProtocol/InternetProtocol,TCP/IP),這是一種四層的體系結(jié)構(gòu)。TCP/IP定義了電子設(shè)備(比如計算機(jī))如何連入互聯(lián)網(wǎng),以及數(shù)據(jù)如何在設(shè)備之間傳輸?shù)臉?biāo)準(zhǔn)。兩個網(wǎng)絡(luò)體系結(jié)構(gòu)的對比如圖1-2所示。圖1-2TCP/IP結(jié)構(gòu)與OSI/RM結(jié)構(gòu)對比在TCP/IP中,應(yīng)用層為協(xié)議的最高層,應(yīng)用程序與該層協(xié)議相配合發(fā)送或接收數(shù)據(jù)。TCP/IP協(xié)議集在應(yīng)用層上有遠(yuǎn)程登錄協(xié)議(Telnet)、文件傳輸協(xié)議(FTP)、電子郵箱協(xié)議(SMTP)、域名系統(tǒng)(DNS)、超文本傳輸協(xié)議(HTTP)等,它們構(gòu)成了TCP/IP基本應(yīng)用程序的基礎(chǔ)。

傳輸層上的主要協(xié)議是TCP(TransmissionControlProtocol,傳輸控制協(xié)議)和。正如網(wǎng)絡(luò)層控制著主機(jī)之間的數(shù)據(jù)傳遞,而傳輸層控制著那些將要進(jìn)入網(wǎng)絡(luò)層的數(shù)據(jù)。TCP與UDP兩個協(xié)議是管理這些數(shù)據(jù)的兩種方式:TCP是一個基于連接的協(xié)議,UDP則是面向無連接服務(wù)的管理方式的協(xié)議。由于UDP不使用很繁瑣的流控制或錯誤恢復(fù)機(jī)制,只充當(dāng)數(shù)據(jù)報的發(fā)送者和接收者,因此,UDP比TCP簡單。網(wǎng)絡(luò)層中的協(xié)議主要有IP、ICMP、IGMP等,由于它包含了IP協(xié)議模塊,因而它是所有基于TCP/IP協(xié)議網(wǎng)絡(luò)的核心。在網(wǎng)絡(luò)層中,IP模塊完成大部分功能。ICMP和IGMP以及其他支持IP的協(xié)議幫助IP完成特定的任務(wù),如傳輸差錯控制信息以及主機(jī)和路由器之間的控制電文等。網(wǎng)絡(luò)層掌管著網(wǎng)絡(luò)中主機(jī)間的信息傳輸。

網(wǎng)絡(luò)接口層實現(xiàn)與通信介質(zhì)的連接,完成數(shù)據(jù)在網(wǎng)絡(luò)中的發(fā)送和接收,向上層協(xié)議屏蔽通信的詳細(xì)過程。

在本書中所涉及的Java網(wǎng)絡(luò)編程以TCP/IP網(wǎng)絡(luò)體系結(jié)構(gòu)為基礎(chǔ)。

1.2網(wǎng)絡(luò)編程

1.2.1網(wǎng)絡(luò)編程的概念

網(wǎng)絡(luò)編程就是用一門編程語言結(jié)合相應(yīng)的網(wǎng)絡(luò)接口API,編寫關(guān)于網(wǎng)絡(luò)信息傳輸方面的程序的過程。如在WindowsXP環(huán)境下,利用C++?語言,根據(jù)Microsoft提供的Winsock2網(wǎng)絡(luò)編程接口,編寫網(wǎng)絡(luò)程序;又如使用Java語言,引用類庫和java.io類庫等相關(guān)類庫包,編寫網(wǎng)絡(luò)程序。各種程序設(shè)計語言都能實現(xiàn)網(wǎng)絡(luò)編程。

根據(jù)TCP/IP的分層體系結(jié)構(gòu),網(wǎng)絡(luò)編程可劃分為如圖1-3所示的層次。圖1-3網(wǎng)絡(luò)編程的層次劃分圖1-3中,用戶功能設(shè)計包含了應(yīng)用層和傳輸層兩層在內(nèi)的應(yīng)用軟件設(shè)計,通常根據(jù)應(yīng)用軟件中傳輸數(shù)據(jù)的要求不同以及用戶需求,選擇適當(dāng)?shù)膫鬏攲訁f(xié)議TCP或者UDP進(jìn)行通信,主要完成某種特定的應(yīng)用,Java網(wǎng)絡(luò)編程集中在此。

通信功能設(shè)計,主要包括傳輸層、網(wǎng)絡(luò)層和網(wǎng)絡(luò)接口層,完成數(shù)據(jù)傳輸安全、數(shù)據(jù)傳輸效率等功能,主要使用C/C++?實現(xiàn)。

在TCP/IP體系結(jié)構(gòu)中,應(yīng)用層協(xié)議與傳輸層協(xié)議的對應(yīng)關(guān)系如表1-1所示。

1.2.2C/S架構(gòu)和B/S架構(gòu)

C/S架構(gòu)是軟件應(yīng)用架構(gòu),通過它可以充分發(fā)揮網(wǎng)絡(luò)兩端的硬件環(huán)境優(yōu)勢,將任務(wù)合理分配到客戶機(jī)端和服務(wù)器端來實現(xiàn),降低系統(tǒng)網(wǎng)絡(luò)通信帶來的開銷。C/S架構(gòu)是一種典型的兩層軟件應(yīng)用架構(gòu),也被稱為是胖客戶端(FatClient)架構(gòu),原因在于客戶機(jī)端需要實現(xiàn)絕大多數(shù)的業(yè)務(wù)邏輯和界面展示,客戶端包含一個或多個在用戶的電腦上運行的程序。該類應(yīng)用架構(gòu)中,作為客戶端的部分需要承受很大的計算壓力,因為顯示邏輯和事務(wù)處理都包含在其中,通過與數(shù)據(jù)庫的交互(通常使用SQL語句或存儲過程來實現(xiàn))來達(dá)到數(shù)據(jù)的永久化存儲,以此滿足實際應(yīng)用項目的需要。服務(wù)器端有兩種:數(shù)據(jù)庫服務(wù)器端,客戶機(jī)端直接連接服務(wù)器端的數(shù)據(jù)庫資源;Socket服務(wù)器端,服務(wù)器端的程序通過Socket與客戶端的程序通信,實現(xiàn)數(shù)據(jù)交換。采用C/S架構(gòu)的常見軟件包括管理信息系統(tǒng)、實時消息軟件、娛樂軟件等。C/S架構(gòu)如圖1-4所示。圖1-4C/S架構(gòu)

B/S架構(gòu)是Web興起后的一種軟件應(yīng)用架構(gòu),Web瀏覽器是客戶端基礎(chǔ)的應(yīng)用軟件。這種模式統(tǒng)一客戶端,將軟件應(yīng)用系統(tǒng)功能實現(xiàn)的核心部分集中到服務(wù)器上,簡化系統(tǒng)的開發(fā)、維護(hù)和使用。其中,瀏覽器指的是Web瀏覽器,極少數(shù)事務(wù)邏輯在瀏覽器端實現(xiàn),但主要事務(wù)邏輯在服務(wù)器端實現(xiàn);由于客戶端承擔(dān)的邏輯很少,因此被稱為瘦客戶端(ThinClient)。通常,由Browser客戶端、WebApp服務(wù)器端和DB端構(gòu)成三層架構(gòu)。B/S架構(gòu)中,顯示邏輯交給了Web瀏覽器,將事務(wù)處理邏輯放在了WebApp上,這樣就避免了龐大的胖客戶端,減少了客戶端的壓力。

B/S架構(gòu)如圖1-5所示。圖1-5B/S架構(gòu)1.2.3C/S架構(gòu)與B/S架構(gòu)的區(qū)別

在為應(yīng)用軟件選擇應(yīng)用架構(gòu)時,可以參考以下C/S與B/S的區(qū)別:

(1)硬件環(huán)境不同。

(2)處理問題不同。

(3)信息流不同。

(4)對安全要求不同。

(5)對程序架構(gòu)不同。

(6)軟件重用性不同。

(7)用戶接口不同。

(8)系統(tǒng)維護(hù)不同。

(9)用戶端表現(xiàn)不同。1.2.4P2P的概念

C/S和B/S架構(gòu)中,都是以服務(wù)器作為中心進(jìn)行應(yīng)用構(gòu)架布局的。伴隨著計算機(jī)網(wǎng)絡(luò)的迅速發(fā)展,客戶機(jī)硬件設(shè)備能力的提高,接入網(wǎng)絡(luò)用戶人數(shù)的增多,以服務(wù)器為核心的模式逐漸不能滿足所有用戶的需求。例如,一個提供視頻的服務(wù)器,或者提供文件下載的服務(wù)器,無法應(yīng)對眾多用戶的同時連接請求。于是,產(chǎn)生了對等技術(shù)。這是一種網(wǎng)絡(luò)通信技術(shù),它依賴于網(wǎng)絡(luò)中參與者的計算能力和帶寬,而不是把所有需求都聚集在較少的幾臺服務(wù)器上。對等技術(shù)又被稱為“點對點”(PeertoPeer,P2P)技術(shù),它允許各個參與者之間相互分享數(shù)據(jù)。P2P模式如圖1-6所示。圖1-6P2P模式伴隨著P2P技術(shù)研究的深入,有斷言說對等聯(lián)網(wǎng)是只讀網(wǎng)絡(luò)的終結(jié),它使客戶機(jī)擺脫了服務(wù)器的束縛,用戶采用新的方式參與互聯(lián)網(wǎng)。其實,P2P不是一個新思想,從某些角度看,它甚至是創(chuàng)建互聯(lián)網(wǎng)的最初最基本的思想。因為,互聯(lián)網(wǎng)的初衷就是使接入網(wǎng)絡(luò)的設(shè)備實現(xiàn)資源共享。

P2P的常見應(yīng)用有文件下載,例如eMule、迅雷、BitTorrent都是用于多點下載的P2P軟件。還有各類網(wǎng)絡(luò)娛樂應(yīng)用,如在線點播、視頻游戲等。

P2P的主要缺點是在為多個連接服務(wù)時,對共享磁盤文件的讀、寫同時進(jìn)行,對硬盤損傷比較大,還有對內(nèi)存占用較多,影響整機(jī)速度。

1.3Java與網(wǎng)絡(luò)編程

1.3.1Java語言

Java語言本身是基于虛擬機(jī)(VirtualMachine,VM)的,程序可以跨各種平臺運行,擁有較好的可移植性,更適合網(wǎng)絡(luò)時代的要求,Java程序的編譯及運行圖如圖1-7所示。

從圖1-7可以看到,Java源程序文件經(jīng)編譯生成字節(jié)碼文件,該字節(jié)碼文件通過網(wǎng)絡(luò)下載到運行終端,經(jīng)過校驗正確,由終端的Java虛擬機(jī)解釋執(zhí)行,從而實現(xiàn)“一次編寫,到處執(zhí)行”。圖1-7Java程序編譯及運行圖1.3.2Java網(wǎng)絡(luò)編程

Java作為一門單純的編程語言和網(wǎng)絡(luò)沒有直接關(guān)系,只有掌握了Java的網(wǎng)絡(luò)類庫(和java.io),才能開始網(wǎng)絡(luò)編程。.net類庫被Java用于封裝網(wǎng)絡(luò)相關(guān)類;.io類庫被Java用于封裝數(shù)據(jù)流的輸入和輸出類。

在本書中,將依次介紹Java與網(wǎng)絡(luò)編程相關(guān)的知識,包括:

與網(wǎng)絡(luò)編程輸入/輸出相關(guān)的類,包括FileInputStream/

FileOutputStream實現(xiàn)以字節(jié)流的形式讀寫文件、ObjectInputStream/ObjectOutputStream以對象流的形式處理數(shù)據(jù)、Zip/ZipEntry進(jìn)行壓縮文件的處理、XML實現(xiàn)跨平臺的數(shù)據(jù)交換等內(nèi)容。與資源定位相關(guān)的類,包括InetAddress實現(xiàn)目標(biāo)主機(jī)的名稱與IP地址的對應(yīng)、URL類進(jìn)行網(wǎng)絡(luò)資源的定位;

與TCP相關(guān)的類,包括Socket建立TCP客戶端套接字,實現(xiàn)發(fā)起對指定服務(wù)器端連接和承擔(dān)數(shù)據(jù)通信任務(wù)、與ServerSocket實現(xiàn)監(jiān)聽客戶端連接請求和實現(xiàn)連接等內(nèi)容;

與UDP相關(guān)的類,包括DatagramSocket建立UDP套接字、DatagramPac

溫馨提示

  • 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

提交評論