版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第12章章 Java網(wǎng)絡(luò)編程網(wǎng)絡(luò)編程 學(xué)習(xí)導(dǎo)讀學(xué)習(xí)導(dǎo)讀n用Java開發(fā)網(wǎng)絡(luò)軟件非常方便且功能強(qiáng)大,Java用于開發(fā)網(wǎng)絡(luò)程序的API均位于包和中。n在本章中我們將首先引見Java網(wǎng)絡(luò)編程中扮演重要角色的InetAddress類,再引見套接字Socket的概念,同時(shí)以實(shí)例闡明如何運(yùn)用Network API支配套接字。n最后簡單引見在非銜接的UDP協(xié)議下如何進(jìn)展網(wǎng)絡(luò)通訊。課程構(gòu)造課程構(gòu)造nInetAddress類n面對銜接的流式套接字n面向非銜接的數(shù)據(jù)報(bào)12.1 InetAddress簡介簡介nInetAddress描畫了描畫了32位或位或128位位IP地址,要完成地址,要完成這個功能,這個功能,
2、InetAddress類主要依托類主要依托Inet4Address 和和 Inet6Address兩個支持類。兩個支持類。n這三個類是承繼關(guān)系,這三個類是承繼關(guān)系,InetAddrress是父類,是父類,Inet4Address 和和 Inet6Address是子類。是子類。 12.1 InetAddress簡介簡介n以經(jīng)過下面的以經(jīng)過下面的5 5個靜態(tài)方法來創(chuàng)建一個個靜態(tài)方法來創(chuàng)建一個InetAddressInetAddress對象或?qū)ο蠡騃netAddressInetAddress數(shù)組數(shù)組 : :n1 1getAllByNamegetAllByNameString hostString h
3、ost方法方法 n2 2getByAddressgetByAddressbyte addrbyte addr方法方法 n3 3getByAddressgetByAddressString host, byte String host, byte addraddr方法方法 n4 4getByNamegetByNameString hostString host方法方法 n5 5getLocalHostgetLocalHost方法方法 n上面講到的方法均提到前往一個或多個上面講到的方法均提到前往一個或多個InetAddressInetAddress對象的援用對象的援用 12.1 InetAddre
4、ss簡介簡介nInetAddress和它的子類型對象處置主機(jī)名到主和它的子類型對象處置主機(jī)名到主機(jī)機(jī)IPv4或或IPv6地址的轉(zhuǎn)換地址的轉(zhuǎn)換 n例:例:InetAddress ia = InetAddress.getByNamesun; n見例見例12。112.2 面向銜接的流式套接字面向銜接的流式套接字n1 什么是套接字什么是套接字 nSocket可以看成在兩個程序進(jìn)展通訊銜接中的可以看成在兩個程序進(jìn)展通訊銜接中的一個端點(diǎn),一個程序?qū)⒁欢涡畔懭胍粋€端點(diǎn),一個程序?qū)⒁欢涡畔懭隨ocket中,中,該該Socket將這段信息發(fā)送給另外一個將這段信息發(fā)送給另外一個Socket中中 12.2 面向
5、銜接的流式套接字面向銜接的流式套接字n在兩個網(wǎng)絡(luò)運(yùn)用程序之間發(fā)送和接納信息時(shí)需在兩個網(wǎng)絡(luò)運(yùn)用程序之間發(fā)送和接納信息時(shí)需求建立一個可靠的銜接,流套接字依托求建立一個可靠的銜接,流套接字依托TCP協(xié)議協(xié)議來保證信息正確到達(dá)目的地。來保證信息正確到達(dá)目的地。n在在C/S程序中程序中,包括了相關(guān)聯(lián)的三個類:包括了相關(guān)聯(lián)的三個類:nInetAddressnSocketnServerSocket 12.2 面向銜接的流式套接字面向銜接的流式套接字n2 ServerSocket類類 n效力器程序套接字效力器程序套接字n構(gòu)造函數(shù):構(gòu)造函數(shù):nServerSocketint port;port參數(shù)傳送端口參數(shù)傳
6、送端口號號 ,假設(shè)在這時(shí)出現(xiàn)錯誤將拋出,假設(shè)在這時(shí)出現(xiàn)錯誤將拋出IOException異異常對象常對象 n接下來效力程序進(jìn)入無限循環(huán)之中。接下來效力程序進(jìn)入無限循環(huán)之中。n無限循環(huán)從調(diào)用無限循環(huán)從調(diào)用ServerSocket的的accept方法方法開場,在調(diào)用開場后開場,在調(diào)用開場后accept方法將導(dǎo)致調(diào)用方法將導(dǎo)致調(diào)用線程阻塞直到銜接建立。在建立銜接后線程阻塞直到銜接建立。在建立銜接后accept前往一個最近創(chuàng)建的前往一個最近創(chuàng)建的Socket對象,該對象,該Socket對象對象綁定了客戶程序的綁定了客戶程序的IP地址或端口號。地址或端口號。 12.2 面向銜接的流式套接字面向銜接的流式套
7、接字n例例:該程序?qū)?chuàng)建一個該程序?qū)?chuàng)建一個ServerSocket對象來監(jiān)聽對象來監(jiān)聽端口端口10000的銜接懇求,假設(shè)勝利,效力程序?qū)⒌你暯討┣螅僭O(shè)勝利,效力程序?qū)⒌却暯虞斎耄_場一個線程處置銜接,并呼應(yīng)等待銜接輸入,開場一個線程處置銜接,并呼應(yīng)來自客戶程序的命令。來自客戶程序的命令。 n見例見例12。212.2 面向銜接的流式套接字面向銜接的流式套接字n3 Socket類類 n當(dāng)客戶程序需求與效力器程序通訊時(shí),客戶程當(dāng)客戶程序需求與效力器程序通訊時(shí),客戶程序在客戶機(jī)創(chuàng)建一個序在客戶機(jī)創(chuàng)建一個socket對象對象 n構(gòu)造函數(shù):構(gòu)造函數(shù):nSocketInetAddress addr,
8、int port;nSocketString host, int port;n能夠經(jīng)過調(diào)用能夠經(jīng)過調(diào)用Socket的的 getInputStream方方法從效力程序獲得輸入流讀傳送來的信息法從效力程序獲得輸入流讀傳送來的信息n能夠經(jīng)過調(diào)用能夠經(jīng)過調(diào)用Socket的的 getOutputStream方方法獲得輸出流來發(fā)送音訊法獲得輸出流來發(fā)送音訊 12.2 面向銜接的流式套接字面向銜接的流式套接字n例:這個程序?qū)?chuàng)建一個例:這個程序?qū)?chuàng)建一個Socket對象,對象,Socket將將訪問運(yùn)轉(zhuǎn)在指定主機(jī)端口訪問運(yùn)轉(zhuǎn)在指定主機(jī)端口10000上的效力程序,上的效力程序,假設(shè)訪問勝利,客戶程序?qū)⒔o效力程序
9、發(fā)送一系假設(shè)訪問勝利,客戶程序?qū)⒔o效力程序發(fā)送一系列命令并打印效力程序的呼應(yīng)列命令并打印效力程序的呼應(yīng) n見例見例12。312.3 面向非銜接的數(shù)據(jù)報(bào)面向非銜接的數(shù)據(jù)報(bào)n1 UDP簡介簡介 User Datagram Protocal nUDP位于第四層位于第四層傳輸層,處于傳輸層,處于IP協(xié)議的上協(xié)議的上一層。一層。nUDP有不提供數(shù)據(jù)報(bào)分組、組裝以及不能對數(shù)有不提供數(shù)據(jù)報(bào)分組、組裝以及不能對數(shù)據(jù)報(bào)排序的缺陷。據(jù)報(bào)排序的缺陷。n當(dāng)報(bào)文發(fā)送之后,是無法得知其能否平安完好當(dāng)報(bào)文發(fā)送之后,是無法得知其能否平安完好到達(dá)的。到達(dá)的。12.3 面向非銜接的數(shù)據(jù)報(bào)面向非銜接的數(shù)據(jù)報(bào)n2 DatagramP
10、acket類類 nDatagramPacket類用于處置報(bào)文,它將類用于處置報(bào)文,它將Byte數(shù)數(shù)組、目的地址和目的端口等數(shù)據(jù)包裝成報(bào)文或者組、目的地址和目的端口等數(shù)據(jù)包裝成報(bào)文或者將報(bào)文裝配成將報(bào)文裝配成Byte數(shù)組數(shù)組 n構(gòu)造函數(shù):構(gòu)造函數(shù):n1DatagramPacket(byte buf, int length);n其中其中buf參數(shù)包含了一個對保管自尋址數(shù)據(jù)報(bào)信參數(shù)包含了一個對保管自尋址數(shù)據(jù)報(bào)信息的字節(jié)數(shù)組的援用,息的字節(jié)數(shù)組的援用,length表示字節(jié)數(shù)組的長表示字節(jié)數(shù)組的長度度 n可以經(jīng)過調(diào)用方法可以經(jīng)過調(diào)用方法setAddressInetAddress addr和和setPor
11、tint port添加上數(shù)據(jù)報(bào)地址添加上數(shù)據(jù)報(bào)地址和端口信息和端口信息 12.3 面向非銜接的數(shù)據(jù)報(bào)面向非銜接的數(shù)據(jù)報(bào)2DatagramPacketbyte buf, int length, InetAddress addr, int port DatagramPacket的常用方法有:的常用方法有:getAddress、setAddressInetAddress 得到、設(shè)得到、設(shè)置數(shù)據(jù)報(bào)地址。置數(shù)據(jù)報(bào)地址。getDate、setDatebyte buf 得到、設(shè)置數(shù)據(jù)得到、設(shè)置數(shù)據(jù)報(bào)內(nèi)容。報(bào)內(nèi)容。getLength、setLengthing length 得到、設(shè)置得到、設(shè)置數(shù)據(jù)報(bào)長度。數(shù)據(jù)
12、報(bào)長度。getPort、setPortint port 得到、設(shè)置端口號。得到、設(shè)置端口號。12.3 面向非銜接的數(shù)據(jù)報(bào)面向非銜接的數(shù)據(jù)報(bào)n3 DatagramSocket類類nDatagramSocket類在客戶端創(chuàng)建數(shù)據(jù)報(bào)套接字類在客戶端創(chuàng)建數(shù)據(jù)報(bào)套接字與效力器端進(jìn)展通訊銜接,并發(fā)送和接受數(shù)據(jù)報(bào)與效力器端進(jìn)展通訊銜接,并發(fā)送和接受數(shù)據(jù)報(bào)套接字套接字 nDatagramSocket構(gòu)造方法:構(gòu)造方法:nDatagramSocket 創(chuàng)建數(shù)據(jù)報(bào)套接字,綁定創(chuàng)建數(shù)據(jù)報(bào)套接字,綁定到本地主機(jī)恣意存在的端口。到本地主機(jī)恣意存在的端口。nDatagramSocketint port 創(chuàng)建數(shù)據(jù)報(bào)套接字,
13、創(chuàng)建數(shù)據(jù)報(bào)套接字,綁定到本地主機(jī)指定端口。綁定到本地主機(jī)指定端口。nDatagramSocketint port, InetAddress laddr 創(chuàng)建數(shù)據(jù)報(bào)套接字,綁定到指定本地地址。創(chuàng)建數(shù)據(jù)報(bào)套接字,綁定到指定本地地址。 12.3 面向非銜接的數(shù)據(jù)報(bào)面向非銜接的數(shù)據(jù)報(bào)n常用方法:常用方法:nconnectInetAddress address, int port 銜接銜接指定地址。指定地址。ndisconnect 斷開套接字銜接。斷開套接字銜接。nclose 封鎖數(shù)據(jù)報(bào)套接字。封鎖數(shù)據(jù)報(bào)套接字。ngetInetAddress 得到套接字所銜接的地址。得到套接字所銜接的地址。ngetLo
14、calAddress 得到套接字綁定的主機(jī)地得到套接字綁定的主機(jī)地址。址。ngetLocalPort 得到套接字綁定的主機(jī)端口號。得到套接字綁定的主機(jī)端口號。ngetPort 得到套接字的端口號。得到套接字的端口號。nreseiveDatagramPacket p 接納數(shù)據(jù)報(bào)。接納數(shù)據(jù)報(bào)。nsendDatagramPacket p 發(fā)送數(shù)據(jù)報(bào)。發(fā)送數(shù)據(jù)報(bào)。n見例見例12。4 例例12。512.3 面向非銜接的數(shù)據(jù)報(bào)面向非銜接的數(shù)據(jù)報(bào)n4 多點(diǎn)傳送和多點(diǎn)傳送和MulticastSocket類類n假設(shè)效力器程序要將同一信息發(fā)送給多個客戶假設(shè)效力器程序要將同一信息發(fā)送給多個客戶端,那么效力器程序和客戶程序可以利用多點(diǎn)傳端,那么效力器程序和客戶程序可以利用多點(diǎn)傳送送multicasting方式進(jìn)展通訊方式進(jìn)展通訊 n網(wǎng)絡(luò)網(wǎng)絡(luò)API經(jīng)過經(jīng)過MulticastSocket類和類和MulticastSocket,以及一些輔助類如,以
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工作總結(jié)之高中數(shù)學(xué)社團(tuán)活動總結(jié)
- 電工電子技術(shù)(第3版) 課件 1.8.2 戴維南定理
- 銀行員工行為規(guī)范與紀(jì)律制度
- 《俞慧紅樓夢》課件
- 《設(shè)計(jì)模板》課件
- 《銀行入職培訓(xùn)課件》課件
- 《放射性監(jiān)測》課件
- 《教育的構(gòu)成》課件
- 分式的性質(zhì)課件
- 2024屆高考語文一輪復(fù)習(xí)第2章小說閱讀4第三節(jié)分析環(huán)境描寫-聚焦人物讀懂風(fēng)景課件
- 國家開放大學(xué)《財(cái)務(wù)管理》章節(jié)隨學(xué)隨練參考答案
- abap--一個功能非常全面的增強(qiáng)出口查找工具(僅供學(xué)習(xí))
- 服裝工藝(各工序)單價(jià)表
- 隧道變形及其控制技術(shù)1
- 生命密碼流年
- 紫色系簡潔風(fēng)送貨單表格模板
- 機(jī)械加工切削參數(shù)匯總
- 施工單位組織機(jī)構(gòu)圖(共3頁)
- 關(guān)鍵工序、特殊工序識別
- 腳手架巡查記錄表
- 年產(chǎn)4萬噸鋁板生產(chǎn)項(xiàng)目建議書寫作模板-立項(xiàng)申批
評論
0/150
提交評論