Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程(第二版) 課件 第11章 網(wǎng)絡(luò)程序設(shè)計(jì)_第1頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程(第二版) 課件 第11章 網(wǎng)絡(luò)程序設(shè)計(jì)_第2頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程(第二版) 課件 第11章 網(wǎng)絡(luò)程序設(shè)計(jì)_第3頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程(第二版) 課件 第11章 網(wǎng)絡(luò)程序設(shè)計(jì)_第4頁(yè)
Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程(第二版) 課件 第11章 網(wǎng)絡(luò)程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第11章網(wǎng)絡(luò)程序設(shè)計(jì)《Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程(第2版)》目錄/Contents11.111.211.3基礎(chǔ)知識(shí)IP地址封裝HTTP思政要點(diǎn)/Point網(wǎng)絡(luò)安全

自覺(jué)維護(hù)網(wǎng)絡(luò)環(huán)境的安全,遵守相關(guān)法律法規(guī)。誠(chéng)信與規(guī)范

嚴(yán)格遵守行業(yè)規(guī)范和道德準(zhǔn)則,保護(hù)用戶數(shù)據(jù)的安全和隱私。創(chuàng)新精神

在項(xiàng)目開(kāi)發(fā)中勇于創(chuàng)新,共同解決問(wèn)題。法律意識(shí)

確保網(wǎng)絡(luò)開(kāi)發(fā)和運(yùn)維工作的合法性和合規(guī)性,樹(shù)立法治觀念吧?;A(chǔ)知識(shí)11.1

傳輸控制協(xié)議(TransmissionControlProtocol,TCP)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。它保障了兩個(gè)應(yīng)用程序之間的可靠通信。在CP的基礎(chǔ)上拓展了網(wǎng)際協(xié)議(InternetProtocol,IP)等內(nèi)容,又組成了互聯(lián)網(wǎng)常用的TCP/IP。套接字(Socket)是一個(gè)抽象層,應(yīng)用程序可以通過(guò)它發(fā)送或接收數(shù)據(jù),可對(duì)其進(jìn)行與文件一樣的打開(kāi)、讀寫(xiě)和關(guān)閉等操作。套接字允許應(yīng)用程序?qū)/O插入到網(wǎng)絡(luò)中,并與網(wǎng)絡(luò)中的其他應(yīng)用程序進(jìn)行通信。套接字為TCP建立了兩臺(tái)計(jì)算機(jī)之間的通信機(jī)制。客戶端程序會(huì)創(chuàng)建一個(gè)套接字,并嘗試連接服務(wù)器的套接字。

當(dāng)連接建立時(shí),服務(wù)器會(huì)創(chuàng)建一個(gè)Socket對(duì)象??蛻舳伺c服務(wù)器可以通過(guò)對(duì)Socket對(duì)象的寫(xiě)入和讀取來(lái)進(jìn)行通信。.Socket類代表一個(gè)套接字,而.ServerSocket類為服務(wù)器程序提供了一種機(jī)制來(lái)監(jiān)聽(tīng)客戶端,并與它們建立連接。11.1.1TCP兩臺(tái)計(jì)算機(jī)之間使用套接字建立TCP連接的步驟如下。1.服務(wù)器實(shí)例化一個(gè)ServerSocket對(duì)象,表示通過(guò)服務(wù)器上的端口通信。2.服務(wù)器調(diào)用ServerSocket類的accept方法,該方法將一直等待,直到客戶端連接上服務(wù)器給定的端口。

3.服務(wù)器等待時(shí),一個(gè)客戶端實(shí)例化一個(gè)Socket對(duì)象,指定服務(wù)器名稱和端口號(hào)來(lái)請(qǐng)求服務(wù)。

4.Socket類的構(gòu)造函數(shù)試圖將客戶端連接到指定的服務(wù)器和端口號(hào)。如果通信被建立,則在客戶端創(chuàng)建一個(gè)Socket對(duì)象與服務(wù)器進(jìn)行通信。5.在服務(wù)器端,accept方法返回服務(wù)器上一個(gè)新的Socket引用,該Socket連接到客戶端的Socket。11.1.1TCP11.1.1TCP方法描述publicServerSocket(intport)throwsIOException構(gòu)造方法,用于創(chuàng)建綁定到特定端口的服務(wù)器套接字publicServerSocket(intport,intbacklog)throwsIOException構(gòu)造方法,利用指定的backlog創(chuàng)建服務(wù)器套接字并將其綁定到指定的本地端口號(hào)publicServerSocket(intport,intbacklog,InetAddressaddress)throwsIOException構(gòu)造方法,利用指定的端口、偵聽(tīng)backlog和要綁定到的本地IP地址創(chuàng)建服務(wù)器publicServerSocket()throwsIOException構(gòu)造方法,創(chuàng)建非綁定服務(wù)器套接字publicintgetLocalPort()返回在此套接字上監(jiān)聽(tīng)的端口publicSocketaccept()throwsIOException監(jiān)聽(tīng)并接收到此套接字的連接publicvoidsetSoTimeout(inttimeout)通過(guò)指定超時(shí)值,啟用/禁用SO_TIMEOUT,以毫秒為單位publicvoidbind(SocketAddresshost,intbacklog)將ServerSocket綁定到特定地址(IP地址和端口號(hào))表11-1ServerSocket類的常用方法11.1.1TCP方法描述publicSocket(Stringhost,intport)throwsUnknownHostException,IOException創(chuàng)建一個(gè)流套接字并將其連接到指定主機(jī)上的指定端口號(hào)publicSocket(InetAddresshost,intport)throwsIOException創(chuàng)建一個(gè)流套接字并將其連接到指定IP地址的指定端口號(hào)publicSocket(Stringhost,intport,InetAddress,intlocalPort)throwsIOException創(chuàng)建一個(gè)流套接字并將其連接到指定遠(yuǎn)程主機(jī)上的指定遠(yuǎn)程端口publicSocket(InetAddresshost,intport,InetAddresslocalAddress,intlocalPort)throwsIOException創(chuàng)建一個(gè)流套接字并將其連接到指定遠(yuǎn)程地址上的指定遠(yuǎn)程端口publicSocket()通過(guò)系統(tǒng)默認(rèn)類型的SocketImpl創(chuàng)建未連接套接字表11-2ServerSocket類的常用方法11.1.1TCP表11-3Socket類的常用方法方法描述publicvoidconnect(SocketAddresshost,inttimeout)throwsIOException將此套接字連接到服務(wù)器,并指定一個(gè)超時(shí)值publicInetAddressgetInetAddress()返回套接字連接的地址publicintgetPort()返回此套接字連接的遠(yuǎn)程端口publicintgetLocalPort()返回此套接字綁定的本地端口publicSocketAddressgetRemoteSocketAddress()返回此套接字連接的端點(diǎn)的地址,如果未連接,則返回NullpublicIutputStreamgetIutputStream()throwsIOException返回此套接字的輸入流publicOutputStreamgetOutputStream()throwsIOException返回此套接字的輸出流publicvoidclose()throwsIOException關(guān)閉此套接字11.1.2UDP

用戶數(shù)據(jù)報(bào)協(xié)議(UserDatagramProtocol,UDP)是一個(gè)無(wú)連接的協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息的傳送服務(wù)。與TCP不同,由于UDP是無(wú)連接的,因此,相對(duì)于TCP而言,其數(shù)據(jù)傳輸?shù)目煽啃暂^低,但是傳輸?shù)男瘦^高。同時(shí),UDP也擁有更簡(jiǎn)單的步驟且占用較少的資源。在很多對(duì)數(shù)據(jù)的可靠性沒(méi)有過(guò)高要求的場(chǎng)合中,使用UDP更為合適。UDP并沒(méi)有客戶端與服務(wù)器端的區(qū)分,統(tǒng)一使用DatagramSocket類作為端,使用DatagramPacket類打包數(shù)據(jù)。UDP作為一種無(wú)連接的、不可靠的傳輸協(xié)議,在網(wǎng)絡(luò)通信中也有其獨(dú)特的應(yīng)用場(chǎng)景。它通過(guò)簡(jiǎn)單的數(shù)據(jù)報(bào)傳輸機(jī)制,提供了高效、低延遲的數(shù)據(jù)傳輸服務(wù),特別適用于對(duì)實(shí)時(shí)性要求較高的應(yīng)用。了解UDP的特點(diǎn)和適用場(chǎng)景,有助于在實(shí)際開(kāi)發(fā)中選擇合適的傳輸協(xié)議。11.1.2UDP方法描述DatagramSocket()構(gòu)造數(shù)據(jù)報(bào)套接字并將其綁定到本地主機(jī)的任何可用的端口DatagramSocket(intport)創(chuàng)建數(shù)據(jù)報(bào)套接字并將其綁定到本地主機(jī)的指定端口DatagramSocket(intport,InetAddressaddress)創(chuàng)建數(shù)據(jù)報(bào)套接字,將其綁定到指定的本地地址,即指定網(wǎng)卡發(fā)送和接收數(shù)據(jù)DatagramPacket(byte[]buf,intlength)構(gòu)造DatagramPacket,用來(lái)接收長(zhǎng)度為length的數(shù)據(jù)包DatagramPacket(byte[]buf,intlength,InetAddressaddress,intport)構(gòu)造數(shù)據(jù)報(bào)包,用于將長(zhǎng)度為length的包發(fā)送到指定主機(jī)的指定端口號(hào)表11-4UDP常用類的構(gòu)造方法11.1.2UDP表11-5UDP與TCP的比較特性UDPTCP連接類型無(wú)連接面向連接可靠性不可靠可靠傳輸速度快較慢數(shù)據(jù)單位數(shù)據(jù)報(bào)字節(jié)流流量控制無(wú)有擁塞控制無(wú)有適用場(chǎng)景實(shí)時(shí)應(yīng)用、查詢響應(yīng)、廣播和多播文件傳輸、電子郵件、網(wǎng)頁(yè)瀏覽、遠(yuǎn)程登錄IP地址封裝11.2

//導(dǎo)入相關(guān)包import.InerAddress;import.UnknownHostException:publicclassTestiP{publicstaticvoidmain(String[]args){try{InetAddressinetl=InetAddress.getByName("”);System.out.println("通過(guò)域名獲得IP地址:"+inetl);//組裝IP地址為一個(gè)byte數(shù)組

byte[]ipv4=newbyte[4];ipv4[0]=6l;ipv4[1]=(byte)135;ipv4[2]=(byte)169;ipv4[3]=125;10.2.1繼承java.lang.Thread類例11-2InetAddress類的使用示例代碼

System.out.println("byte數(shù)組真實(shí)值:"+ipv4[0]+","+ipv4[1]+","+ipv4[2]+",”+ipv4[3]+",");//獲得指定網(wǎng)絡(luò)地址的InetAddress類對(duì)象InetAddressinet2=InetAddress.getByAddress("baidu",ipv4);System.out.println("IP地址:"+inet2);//獲得本地網(wǎng)絡(luò)地址的InetAddress類對(duì)象InetAddressinet3=InetAddress.getLocalHost();System.out.println("本機(jī)IP地址:”+inet3);}catch(UnknownHostExceptione){e.printStackTrace();}}}}HTTP11.311.3.1HTTP請(qǐng)求/響應(yīng)的步驟HTTP請(qǐng)求和響應(yīng)的過(guò)程包括以下5個(gè)步驟,如圖11-1所示。1.建立TCP連接客戶端和服務(wù)器通過(guò)三次握手建立TCP連接,確保數(shù)據(jù)傳輸?shù)目煽啃院屯暾浴?.發(fā)送HTTP請(qǐng)求客戶端通過(guò)建立的TCP連接發(fā)送HTTP請(qǐng)求,請(qǐng)求行、請(qǐng)求頭和請(qǐng)求體包含請(qǐng)求的具體信息。3.服務(wù)器處理請(qǐng)求并發(fā)送響應(yīng)服務(wù)器解析客戶端的請(qǐng)求,生成相應(yīng)的HTTP響應(yīng),響應(yīng)狀態(tài)碼、響應(yīng)頭和響應(yīng)體包含響應(yīng)的具體信息。4.客戶端接收響應(yīng)客戶端接收并處理服務(wù)器的響應(yīng),如渲染HTML頁(yè)面。5.關(guān)閉TCP連接請(qǐng)求和響應(yīng)完成后,可以根據(jù)需要關(guān)閉TCP連接,或者保持連接以進(jìn)行后續(xù)的請(qǐng)求和響應(yīng)。11.3.1HTTP請(qǐng)求/響應(yīng)的步驟圖11-1HTTP請(qǐng)求/響應(yīng)步驟圖

11.3.23次握手協(xié)議1.第一次握手客戶端向服務(wù)器發(fā)送一個(gè)帶有SYN標(biāo)志的TCP報(bào)文段,請(qǐng)求建立連接??蛻舳诉M(jìn)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論