




已閱讀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)介
第12章 Java網(wǎng)絡(luò)編程,學(xué)習(xí)導(dǎo)讀,用Java開(kāi)發(fā)網(wǎng)絡(luò)軟件非常方便且功能強(qiáng)大,Java用于開(kāi)發(fā)網(wǎng)絡(luò)程序的API均位于包和中。 在本章中我們將首先介紹Java網(wǎng)絡(luò)編程中扮演重要角色的InetAddress類,再介紹套接字(Socket)的概念,同時(shí)以實(shí)例說(shuō)明如何使用Network API操縱套接字。 最后簡(jiǎn)單介紹在非連接的UDP協(xié)議下如何進(jìn)行網(wǎng)絡(luò)通訊。,課程結(jié)構(gòu),InetAddress類 面對(duì)連接的流式套接字 面向非連接的數(shù)據(jù)報(bào),12.1 InetAddress簡(jiǎn)介,InetAddress描述了32位或128位IP地址,要完成這個(gè)功能,InetAddress類主要依靠Inet4Address 和 Inet6Address兩個(gè)支持類。 這三個(gè)類是繼承關(guān)系,InetAddrress是父類,Inet4Address 和 Inet6Address是子類。,12.1 InetAddress簡(jiǎn)介,以通過(guò)下面的5個(gè)靜態(tài)方法來(lái)創(chuàng)建一個(gè)InetAddress對(duì)象或InetAddress數(shù)組 : (1)getAllByName(String host)方法 (2)getByAddress(byte addr)方法 (3)getByAddress(String host, byte addr)方法 (4)getByName(String host)方法 (5)getLocalHost()方法 上面講到的方法均提到返回一個(gè)或多個(gè)InetAddress對(duì)象的引用,12.1 InetAddress簡(jiǎn)介,InetAddress和它的子類型對(duì)象處理主機(jī)名到主機(jī)IPv4或IPv6地址的轉(zhuǎn)換 例:InetAddress ia = InetAddress.getByName(““); 見(jiàn)例12。1,12.2 面向連接的流式套接字,1 什么是套接字 Socket可以看成在兩個(gè)程序進(jìn)行通信連接中的一個(gè)端點(diǎn),一個(gè)程序?qū)⒁欢涡畔?xiě)入Socket中,該Socket將這段信息發(fā)送給另外一個(gè)Socket中,12.2 面向連接的流式套接字,在兩個(gè)網(wǎng)絡(luò)應(yīng)用程序之間發(fā)送和接收信息時(shí)需要建立一個(gè)可靠的連接,流套接字依靠TCP協(xié)議來(lái)保證信息正確到達(dá)目的地。 在C/S程序中,包括了相關(guān)聯(lián)的三個(gè)類: InetAddress Socket ServerSocket,12.2 面向連接的流式套接字,2 ServerSocket類 服務(wù)器程序套接字 構(gòu)造函數(shù): ServerSocket(int port);port參數(shù)傳遞端口號(hào) ,如果在這時(shí)出現(xiàn)錯(cuò)誤將拋出IOException異常對(duì)象 接下來(lái)服務(wù)程序進(jìn)入無(wú)限循環(huán)之中。 無(wú)限循環(huán)從調(diào)用ServerSocket的accept()方法開(kāi)始,在調(diào)用開(kāi)始后accept()方法將導(dǎo)致調(diào)用線程阻塞直到連接建立。在建立連接后accept()返回一個(gè)最近創(chuàng)建的Socket對(duì)象,該Socket對(duì)象綁定了客戶程序的IP地址或端口號(hào)。,12.2 面向連接的流式套接字,例:該程序?qū)?chuàng)建一個(gè)ServerSocket對(duì)象來(lái)監(jiān)聽(tīng)端口10000的連接請(qǐng)求,如果成功,服務(wù)程序?qū)⒌却B接輸入,開(kāi)始一個(gè)線程處理連接,并響應(yīng)來(lái)自客戶程序的命令。 見(jiàn)例12。2,12.2 面向連接的流式套接字,3 Socket類 當(dāng)客戶程序需要與服務(wù)器程序通信時(shí),客戶程序在客戶機(jī)創(chuàng)建一個(gè)socket對(duì)象 構(gòu)造函數(shù): Socket(InetAddress addr, int port); Socket(String host, int port); 可能通過(guò)調(diào)用Socket的 getInputStream()方法從服務(wù)程序獲得輸入流讀傳送來(lái)的信息 可能通過(guò)調(diào)用Socket的 getOutputStream()方法獲得輸出流來(lái)發(fā)送消息,12.2 面向連接的流式套接字,例:這個(gè)程序?qū)?chuàng)建一個(gè)Socket對(duì)象,Socket將訪問(wèn)運(yùn)行在指定主機(jī)端口10000上的服務(wù)程序,如果訪問(wèn)成功,客戶程序?qū)⒔o服務(wù)程序發(fā)送一系列命令并打印服務(wù)程序的響應(yīng) 見(jiàn)例12。3,12.3 面向非連接的數(shù)據(jù)報(bào),1 UDP簡(jiǎn)介 (User Datagram Protocal) UDP位于第四層傳輸層,處于IP協(xié)議的上一層。 UDP有不提供數(shù)據(jù)報(bào)分組、組裝以及不能對(duì)數(shù)據(jù)報(bào)排序的缺點(diǎn)。 當(dāng)報(bào)文發(fā)送之后,是無(wú)法得知其是否安全完整到達(dá)的。,12.3 面向非連接的數(shù)據(jù)報(bào),2 DatagramPacket類 DatagramPacket類用于處理報(bào)文,它將Byte數(shù)組、目標(biāo)地址和目標(biāo)端口等數(shù)據(jù)包裝成報(bào)文或者將報(bào)文拆卸成Byte數(shù)組 構(gòu)造函數(shù): 1)DatagramPacket(byte buf, int length); 其中buf參數(shù)包含了一個(gè)對(duì)保存自尋址數(shù)據(jù)報(bào)信息的字節(jié)數(shù)組的引用,length表示字節(jié)數(shù)組的長(zhǎng)度 可以通過(guò)調(diào)用方法setAddress(InetAddress addr)和setPort(int port)添加上數(shù)據(jù)報(bào)地址和端口信息,12.3 面向非連接的數(shù)據(jù)報(bào),2)DatagramPacket(byte buf, int length, InetAddress addr, int port) DatagramPacket的常用方法有: getAddress()、setAddress(InetAddress) 得到、設(shè)置數(shù)據(jù)報(bào)地址。 getDate()、setDate(byte buf) 得到、設(shè)置數(shù)據(jù)報(bào)內(nèi)容。 getLength()、setLength(ing length) 得到、設(shè)置數(shù)據(jù)報(bào)長(zhǎng)度。 getPort()、setPort(int port) 得到、設(shè)置端口號(hào)。,12.3 面向非連接的數(shù)據(jù)報(bào),3 DatagramSocket類 DatagramSocket類在客戶端創(chuàng)建數(shù)據(jù)報(bào)套接字與服務(wù)器端進(jìn)行通信連接,并發(fā)送和接受數(shù)據(jù)報(bào)套接字 DatagramSocket構(gòu)造方法: DatagramSocket() 創(chuàng)建數(shù)據(jù)報(bào)套接字,綁定到本地主機(jī)任意存在的端口。 DatagramSocket(int port) 創(chuàng)建數(shù)據(jù)報(bào)套接字,綁定到本地主機(jī)指定端口。 DatagramSocket(int port, InetAddress laddr) 創(chuàng)建數(shù)據(jù)報(bào)套接字,綁定到指定本地地址。,12.3 面向非連接的數(shù)據(jù)報(bào),常用方法: connect(InetAddress address, int port) 連接指定地址。 disconnect() 斷開(kāi)套接字連接。 close() 關(guān)閉數(shù)據(jù)報(bào)套接字。 getInetAddress() 得到套接字所連接的地址。 getLocalAddress() 得到套接字綁定的主機(jī)地址。 getLocalPort() 得到套接字綁定的主機(jī)端口號(hào)。 getPort() 得到套接字的端口號(hào)。 reseive(DatagramPacket p) 接收數(shù)據(jù)報(bào)。 send(DatagramPacket p) 發(fā)送數(shù)據(jù)報(bào)。 見(jiàn)例12。4 例12。5,12.3 面向非連接的數(shù)據(jù)報(bào),4 多點(diǎn)傳送和MulticastSocket類 如果服務(wù)器程序要將同一信息發(fā)送給多個(gè)客戶端,那么服務(wù)器程序和客戶程序可以利用多點(diǎn)傳送(multicasting)方式進(jìn)行通信 網(wǎng)絡(luò)API通過(guò)MulticastSocket類和Mu
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)短波無(wú)線電廣播天線行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030年中國(guó)電視機(jī)行業(yè)市場(chǎng)發(fā)展分析及發(fā)展前景與投資策略研究報(bào)告
- 2025-2030年中國(guó)玻璃纖維濾袋行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 小學(xué)竹編教學(xué)課件
- 護(hù)理?yè)尵却胧┱n件
- 教學(xué)課件聚合
- 財(cái)務(wù)分析在企業(yè)經(jīng)營(yíng)決策中的應(yīng)用與價(jià)值
- 工地文明質(zhì)量創(chuàng)優(yōu)計(jì)劃方案
- 血液透析的抗凝治療講課件
- 營(yíng)養(yǎng)不良的五階梯治療講課件
- 2025年四川省成都市中考語(yǔ)文真題(解析版)
- 北京市2024年高招本科普通批錄取投檔線
- 2025年黑龍江、吉林、遼寧、內(nèi)蒙古高考物理真題(解析版)
- 民航招飛初選試題及答案
- 2025年電子商務(wù)法律法規(guī)考試試題及答案
- 國(guó)開(kāi)2025年《資源與運(yùn)營(yíng)管理》形考任務(wù)1-4答案
- 2025年安全生產(chǎn)考試題庫(kù)(危險(xiǎn)化學(xué)品安全)危險(xiǎn)化學(xué)品安全操作規(guī)范應(yīng)用試題
- T/CIQA 74-2024人工智能(AI)鑒定通用規(guī)范
- 美容院洗滌協(xié)議書(shū)
- 學(xué)習(xí)解讀《水利水電建設(shè)工程驗(yàn)收規(guī)程》SLT223-2025課件
- 2025甘肅省農(nóng)墾集團(tuán)有限責(zé)任公司招聘生產(chǎn)技術(shù)人員145人筆試參考題庫(kù)附帶答案詳解
評(píng)論
0/150
提交評(píng)論