版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第21講網(wǎng)絡(luò)編程21.1 InetAddress21.1 InetAddress類類21.2 URL21.2 URL類類21.3 URLConnection21.3 URLConnection類類21.4 Socket21.4 Socket通訊通訊講后練習(xí)講后練習(xí)互聯(lián)上計(jì)算機(jī)之間的通訊必需遵照一定的協(xié)議,目前最廣泛的網(wǎng)絡(luò)協(xié)議是TCP/IP協(xié)議,IP協(xié)議主要擔(dān)任網(wǎng)絡(luò)主機(jī)的定位,實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)穆酚蛇x擇。實(shí)踐運(yùn)用中運(yùn)用域名地址,域名和IP之間的轉(zhuǎn)換經(jīng)過(guò)域名解析完成。網(wǎng)絡(luò)傳輸層擔(dān)任數(shù)據(jù)傳輸時(shí)的正確性,該層有兩類典型的通訊協(xié)議:TCP協(xié)議和UDP協(xié)議。1TCP:Transfer Control Prot
2、ocol經(jīng)過(guò)TCP協(xié)議傳輸,得到的是一個(gè)順序的無(wú)過(guò)失的數(shù)據(jù)流運(yùn)用TCP通訊,發(fā)送方和接納方首先要建立socket銜接,在客戶/效力器通訊中,效力方在某個(gè)端口提供效力,等待客戶方的訪問(wèn)銜接,建立銜接后,雙方就可以發(fā)送和接納數(shù)據(jù)了。2UDP:User Datagram ProtocolUDP是一種無(wú)銜接的協(xié)議,每個(gè)數(shù)據(jù)報(bào)都是一個(gè)獨(dú)立的信息,包括完好的源地址或目的地址,它在網(wǎng)絡(luò)上以任何能夠的途徑傳往目的地。因此能否到達(dá)目的地、到達(dá)目的地的時(shí)間及內(nèi)容的正確性都不能保證,但UDP無(wú)需進(jìn)展銜接,傳輸效率高。如傳輸聲音信號(hào)或視頻信號(hào)等。包中提供了豐富的網(wǎng)絡(luò)功能:1InetAddress類表示IP地址;2UR
3、L類封裝了對(duì)資源的訪問(wèn);3ServerSocket類和Socket類實(shí)現(xiàn)面向銜接的網(wǎng)絡(luò)通訊;4DatagramPacket類和DatagrameSocket類實(shí)現(xiàn)數(shù)據(jù)報(bào)的收發(fā)21.1 InetAddress21.1 InetAddress類類因特網(wǎng)上用IP地址或域名標(biāo)識(shí)主機(jī),InetAddress對(duì)象封裝了這兩部分內(nèi)容。InetAddress對(duì)象運(yùn)用如下格式表示主機(jī)的信息:/41InetAddress類的主要方法有:1static InetAddress getByName(String host):根據(jù)主機(jī)名InetAddress對(duì)象,運(yùn)用該方法必需捕
4、獲UnknownHostException異常。2static InetAddress getLocalHost():前往本地主機(jī)對(duì)應(yīng)的InetAddress對(duì)象,假設(shè)該主機(jī)無(wú)IP地址,那么產(chǎn)生UnknownHostException異常。3String getHostAddress():前往UnknownHostException異常的IP地址。4String getHostName():前往UnknownHostException異常的域名。21.2 URL21.2 URL類類URL:Uniform Resource Locator,一致資源定位符。用于從主機(jī)上讀取資源只能讀取,不能向主機(jī)
5、寫。1一個(gè)URL地址通常由4部分組成:協(xié)議名:如http、ftp、file等主機(jī)名:如baidu、43等途徑文件:如/java/index.jsp端口號(hào):如8080、8081等2URL類的常用方法:String getFile():獲取URL的文件名,它是帶途徑的文件標(biāo)識(shí);String getHost():獲取URL的主機(jī)名;String getPath():獲得URL的途徑部分;int getPort():獲得URL的端口號(hào);URLConnection openConnection():前往代表與URL進(jìn)展銜接的URLConnection對(duì)象;InputStream
6、 openStream():翻開與URL的銜接,前往來(lái)自銜接的輸入流;Object getContent():獲取URL的內(nèi)容。21.3 URLConnection21.3 URLConnection類類URLConnection類可實(shí)現(xiàn)與URL資源雙向通訊。它代表運(yùn)用程序和 URL 之間的通訊鏈接。此類的實(shí)例可用于讀取和寫入此URL援用的資源。通常,創(chuàng)建一個(gè)到URL的銜接需求幾個(gè)步驟:1經(jīng)過(guò)在URL上調(diào)用openConnection方法創(chuàng)建銜接對(duì)象。 2處置設(shè)置參數(shù)和普通懇求屬性。 3運(yùn)用connect方法建立到遠(yuǎn)程對(duì)象的實(shí)踐銜接,或者運(yùn)用URL類的openConnection()方法建立實(shí)
7、踐銜接。4遠(yuǎn)程對(duì)象變?yōu)榭捎?。遠(yuǎn)程對(duì)象的頭字段和內(nèi)容變?yōu)榭稍L問(wèn)。21.4 Socket21.4 Socket通訊通訊Java提供了Socket類和ServerSocket類分別用于Client端和Server端的Socket通訊,下面是分別對(duì)這兩個(gè)類進(jìn)展引見(jiàn)。1Socket類構(gòu)造方法: Socket(String, int):構(gòu)造一個(gè)指定主機(jī),指定端口號(hào)的Socket。 Socket(InetAddress, int):構(gòu)造一個(gè)指定Internet地址,指定端口號(hào)的Socket。 2ServerSocket類 ServerSocket( int):創(chuàng)建綁定到特定端口的效力器套接字。 Server
8、Socket( int,int):創(chuàng)建效力器套接字并將其綁定到指定的本地端口號(hào),其中第二個(gè)參數(shù)是監(jiān)聽時(shí)間的長(zhǎng)度。3建立銜接與數(shù)據(jù)通訊 首先,在效力器端創(chuàng)建一個(gè)ServerSocket對(duì)象,此對(duì)象經(jīng)過(guò)執(zhí)行accept()方法監(jiān)聽客戶端銜接,此時(shí)效力器端線程處于等待形狀。然后在客戶端構(gòu)造Socket,與某效力器的指定端口進(jìn)展銜接。效力器監(jiān)聽到銜接懇求后,就可在兩者之間建立銜接,銜接建立后,就可以獲得相應(yīng)的輸入、輸出流進(jìn)展通訊。在典型的效力器中,我們希望同時(shí)能處置多個(gè)客戶的懇求。處理這個(gè)問(wèn)題的關(guān)鍵就是多線程處置機(jī)制。最根本的方法是在效力器程序里創(chuàng)建單個(gè)ServerSocket,并調(diào)用accept()
9、來(lái)等候一個(gè)新銜接。一旦accept()前往,我們就獲得結(jié)果獲得的Socket,并用它新建一個(gè)線程,令其只為那個(gè)特定的客戶效力。然后再調(diào)用accept(),等候下一次新的銜接懇求。21.5 21.5 無(wú)銜接的數(shù)據(jù)報(bào)無(wú)銜接的數(shù)據(jù)報(bào) 數(shù)據(jù)報(bào)是一種無(wú)銜接的通訊方式,它的速度比較快,但是由于不建立銜接,不能保證一切數(shù)據(jù)都能送到目的地,普通用于傳送非關(guān)鍵性的數(shù)據(jù)。 1DatagramPacket類 此類是進(jìn)展數(shù)據(jù)通訊的根本單位,包含需求傳送的數(shù)據(jù)、數(shù)據(jù)報(bào)的長(zhǎng)度、IP地址和端口號(hào)等信息。其構(gòu)造方法如下: DatagramPacket(byte buf, int length) :構(gòu)造 DatagramPac
10、ket,用來(lái)接納長(zhǎng)度為 length 的數(shù)據(jù)包。 DatagramPacket(byte buf, int length, InetAddress address, int port):構(gòu)造數(shù)據(jù)報(bào)包,用來(lái)將長(zhǎng)度為 length 的包發(fā)送到指定主機(jī)上的指定端口號(hào)。 DatagramPacket(byte buf, int offset, int length):構(gòu)造 DatagramPacket,用來(lái)接納長(zhǎng)度為 length 的包,在緩沖區(qū)中指定了偏移量。DatagramPacket(byte buf, int offset, int length, InetAddress address, i
11、nt port):構(gòu)造數(shù)據(jù)報(bào)包,用來(lái)將長(zhǎng)度為 length 偏移量為 offset 的包發(fā)送到指定主機(jī)上的指定端口號(hào)。 DatagramPacket(byte buf, int offset, int length, SocketAddress address):構(gòu)造數(shù)據(jù)報(bào)包,用來(lái)將長(zhǎng)度為 length 偏移量為 offset 的包發(fā)送到指定主機(jī)上的指定端口號(hào)。 DatagramPacket(byte buf, int length, SocketAddress address):構(gòu)造數(shù)據(jù)報(bào)包,用來(lái)將長(zhǎng)度為 length 的包發(fā)送到指定主機(jī)上的指定端口號(hào)。 DatagramPacket類中的常
12、用函數(shù)有: void setData(byte buf):設(shè)置數(shù)據(jù)緩沖區(qū)。 byte getData():前往數(shù)據(jù)緩沖區(qū)。 getLength():前往發(fā)送或接納數(shù)據(jù)報(bào)的長(zhǎng)度。2DatagramSocket類DatagramSocket類是用來(lái)發(fā)送或接納數(shù)據(jù)報(bào)的Socket,其構(gòu)造方法如下: DatagramSocket():構(gòu)造一個(gè)用于發(fā)送的DatagramSocket。 DatagramSocket(int port):構(gòu)造一個(gè)用于接納的DatagramSocket,參數(shù)為接納端口號(hào)。3發(fā)送和接納過(guò)程下面代碼給出了數(shù)據(jù)報(bào)接納和發(fā)送的編程要點(diǎn),接納端的IP地址是,端口號(hào)
13、是80,發(fā)送的數(shù)據(jù)在緩沖區(qū)message中,長(zhǎng)度為200。接納端的程序:byte inbuffer=new byte1024;/設(shè)置緩沖區(qū)DatagramPacket inpacket=new DatagramPacket(inbuffer,inbuffer.length);DatagramSocket insocket=new DatagramSocket(80);/設(shè)置端口號(hào)insocket.receive(inpacket);/接納數(shù)據(jù)報(bào)String s=new String(inbuffer,0,0,inpacket.getLength();/將接納的數(shù)據(jù)存入字符串。 發(fā)送端程序:/message為存放發(fā)送數(shù)據(jù)的字節(jié)數(shù)組DatagramPacket outpacket=new DatagramPacket(message,200,,80);DatagramSocket outsocket=new DatagramSocket();outsocket.send(outpacket);講后練習(xí)講后練習(xí)1、編寫java程序,利用URL對(duì)象讀取網(wǎng)絡(luò)上文件的內(nèi)容。2、編寫程序?qū)崿F(xiàn):客戶端Client.java向效力器Server.java端懇求懇求是一句話,為一個(gè)String。假設(shè)這句話的內(nèi)容字符串是字符串“plain的話,效力器僅將“Hello字符串前往給用
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年湖北省宜昌市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2022年河南省洛陽(yáng)市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2024年云南省麗江市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 鳳慶縣政協(xié)十二五規(guī)劃調(diào)研報(bào)告
- 遼寧省遼陽(yáng)市(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)部編版小升初真題(上學(xué)期)試卷及答案
- 2025年油罐計(jì)量系統(tǒng)項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模范
- 2025年差容式力平衡傳感器項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模范
- 廣西北海市(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)部編版階段練習(xí)(下學(xué)期)試卷及答案
- 上海名校一模全真模擬卷01-新高考英語(yǔ)一輪總復(fù)習(xí)(上海專用)(解析版)
- 2025年巨型計(jì)算機(jī)項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模板
- 《病毒》教學(xué)設(shè)計(jì)
- 路面基層允許彎沉值計(jì)算+彎沉系數(shù)圖+允許彎沉值計(jì)算公式
- 連鑄意外事故處理
- 國(guó)家開放大學(xué)(中央廣播電視大學(xué))報(bào)名登記表【模板】
- 新職業(yè)英語(yǔ)1-基礎(chǔ)篇-Unit 3(課堂PPT)
- 公司各部門協(xié)作情況互評(píng)表滿意度調(diào)查表
- 第二章水準(zhǔn)測(cè)量PPT課件
- 長(zhǎng)輸管道原油輸送基本知識(shí)
- 完美世界的材料
- 藻類名稱(漢拉對(duì)照)
- 勞資專管員任命書
評(píng)論
0/150
提交評(píng)論