Java的網(wǎng)絡(luò)功能課件_第1頁(yè)
Java的網(wǎng)絡(luò)功能課件_第2頁(yè)
Java的網(wǎng)絡(luò)功能課件_第3頁(yè)
Java的網(wǎng)絡(luò)功能課件_第4頁(yè)
Java的網(wǎng)絡(luò)功能課件_第5頁(yè)
已閱讀5頁(yè),還剩24頁(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)介

Java的網(wǎng)路功能

概述

TCP/IP(TransmissionControlProtocol/InternetProtocol,傳輸控制協(xié)議/網(wǎng)間協(xié)議)包括五個(gè)層次:應(yīng)用層、傳輸層、網(wǎng)路層、鏈路層、物理層

ISO/OSI網(wǎng)路參考模型包括七個(gè)層次:應(yīng)用層、表示層、會(huì)話層、傳輸層、網(wǎng)路層、鏈路層、物理層

概述IP地址

網(wǎng)路中的硬體資源標(biāo)識(shí)

是一個(gè)32位的整數(shù),通常以“%d.%d.%d.%d”的形式表示,每個(gè)d是一個(gè)8位整數(shù)

端口號(hào)(port)標(biāo)記機(jī)器的邏輯通信通道的正整數(shù),不是物理實(shí)體一個(gè)16位的整數(shù)表達(dá),其範(fàn)圍為0~65535,其中0~1023為系統(tǒng)所保留

Socket(套接字)網(wǎng)路上運(yùn)行的程式之間雙向通信鏈路的最後終結(jié)點(diǎn),是TCP和UDP的基礎(chǔ)

概述TCP協(xié)議具有可靠性和有序性,並且以位元組流的方式發(fā)送數(shù)據(jù),它通常被稱為流通信協(xié)議。端點(diǎn)與端點(diǎn)之間建立持續(xù)的連接當(dāng)對(duì)所傳輸?shù)臄?shù)據(jù)具有時(shí)序性和可靠性等要求時(shí),應(yīng)使用TCP協(xié)議用戶數(shù)據(jù)報(bào)協(xié)議UDP一種無(wú)連接的傳輸協(xié)議

需要將傳輸?shù)臄?shù)據(jù)定義成數(shù)據(jù)報(bào)(Datagram),在數(shù)據(jù)報(bào)中指明數(shù)據(jù)所要達(dá)到的端點(diǎn)(Socket,主機(jī)地址和端口號(hào)),再將數(shù)據(jù)報(bào)發(fā)送出去當(dāng)傳輸?shù)臄?shù)據(jù)比較簡(jiǎn)單、對(duì)時(shí)序等無(wú)要求時(shí)應(yīng)使用UDP協(xié)議Java的網(wǎng)路功能

按層次及使用方法分為四大類

InetAddress

面向IP層,用於標(biāo)識(shí)網(wǎng)路上的硬體資源URL

面向應(yīng)用層,可以通過(guò)URL的網(wǎng)路資源表達(dá)形式確定數(shù)據(jù)在網(wǎng)路中的位置Socket

面向傳輸層,使用的是TCP協(xié)議

Datagram

面向傳輸層,使用的是UDP協(xié)議,是另一種網(wǎng)路傳輸方式,它把數(shù)據(jù)的目的地記錄在數(shù)據(jù)包中,然後直接放在網(wǎng)路上

主要的類及例外

使用InetAddress

構(gòu)造一個(gè)InetAddress實(shí)例沒(méi)有構(gòu)造函數(shù),因此不能用new來(lái)構(gòu)造

publicstaticInetAddressgetByName(Stringhost);

publicstaticInetAddressgetLocalHost();publicstaticInetAddress[]getAllByName(Stringhost)

host可以是一臺(tái)機(jī)器名,也可以是一個(gè)形如“%d.%d.%d.%d”的IP地址或一個(gè)DSN功能變數(shù)名稱。

InetAddress類主要方法

publicbyte[]getAddress()獲得本對(duì)象的IP地址(存放在位元組數(shù)組中)publicStringgetHostAddress()獲得本對(duì)象的IP地址“%d.%d.%d.%d”publicStringgetHostName()獲得本對(duì)象的機(jī)器名程式12-1

演示Java如何根據(jù)功能變數(shù)名稱自動(dòng)到DNS(功能變數(shù)名稱服務(wù))上查找IP地址程式12-1

執(zhí)行GetIP後,可以得到下列資訊:

www.nankai.edu.cn/3

獲取本機(jī)的IP地址

例12-1本機(jī)名稱和地址統(tǒng)一資源定位器

URL是UniformResourceLocator(統(tǒng)一資源定位器)的縮寫,它表示Internet上某一資源的地址

nternet上的資源包括HTML檔、圖象檔、聲音檔、動(dòng)畫檔以及其他任何內(nèi)容URL包括兩部分內(nèi)容

協(xié)議名稱和資源名稱,中間用冒號(hào)隔開

Protocol:resourceName

URL的具體結(jié)構(gòu)

protocol://host_name:port_number/file_name/reference

protocol: 用來(lái)指示所要獲取資源的傳輸協(xié)議, 如:http、ftp、gopher、file等host_name: 用來(lái)指示資源所在的主機(jī)port_number:

用來(lái)指示連接時(shí)所使用的通信端口號(hào)file_name: 用來(lái)指示該資源在主機(jī)的完整檔案名reference: 指示資源中的某個(gè)特定位置http://www.nankai.edu.cn:80/whitePaper/Javawhitepaper_1.htmlhttp://www.abc.com:8080/java/network.html#UDPhttp://www.neca.com/~vmis/java.htmlURL的構(gòu)造方法publicURL(Stringspec)

將整個(gè)URL的名稱直接以字串的形式作為參數(shù)傳入即可

publicURL(URLcontext,Stringspec)

可以表示相對(duì)URL位置的定義

第一個(gè)參數(shù)設(shè)為null,那麼它的作用就和第一種方式相同了

URLurl1=newURL("http://www.nankai.edu.cn");

URLhost=newURL("file://export/home/Java/image/");URLaImage=newURL(host,getParameter("FILENAME"));

URL的構(gòu)造方法publicURL(Stringprotocol,Stringhost,Stringfile)

publicURL(Stringprotocol,Stringhost,intport,Stringfile)

直接指定每個(gè)域的內(nèi)容,而不是直接給出一個(gè)字串來(lái)表示。必須給出確定的傳輸協(xié)議、機(jī)器名稱、檔案名,或者加上端口號(hào)

比如以::80/whitePaper/Javawhitepaper_1.html為例,構(gòu)造方式為:URLurl3=newURL("http","",80,"/whitePaper/Javawhitepaper_1.html");

與URL相關(guān)的異常

類URL的構(gòu)造方法中都聲明拋出非運(yùn)行時(shí)異常——MalformedURLException

查看示例12-1獲取URL對(duì)象屬性StringgetProtocol() 獲取傳輸協(xié)議

StringgetHost()

獲取機(jī)器名稱

StringgetPort()

獲取通信端口號(hào)

StringgetFile()

獲取資源檔案名稱

StringgetRef()

獲取參考點(diǎn)下麵的兩個(gè)方法將URL對(duì)象的內(nèi)容以字串的形式來(lái)表示,它們的作用是相同的

StringtoString() StringtoExternalForm()

程式12-2

程式12-2中創(chuàng)建了一個(gè)URL對(duì)象,然後輸出其屬性

讀入U(xiǎn)RL數(shù)據(jù)

openStream()方法

讀取一個(gè)URL對(duì)象所指定的資源。與指定的URL建立連接並返回一個(gè)InputStream對(duì)象程式12-3在命令行中指定一個(gè)合理的檔案名,便可以顯示出檔的內(nèi)容,其功能類似於DOS中的type命令A(yù)pplet中網(wǎng)路通訊

在Applet中將URL和InetAddress聯(lián)合使用來(lái)得到相關(guān)的IP地址1)通過(guò)類Applet的getCodeBase()方法獲得提供它的主機(jī)的URL實(shí)例2)利用類URL的getHost()方法得到主機(jī)名3)利用類InetAddress的getByName()得到該主機(jī)的IP地址4)通過(guò)IP地址,就可以進(jìn)行網(wǎng)路通信了,使用的協(xié)議包括TCP或是UDP。見例12-2

應(yīng)用程式和URL資源之間進(jìn)行交互

通過(guò)URLConnection類,可以在應(yīng)用程式和URL資源之間進(jìn)行交互,既可以從URL中讀取數(shù)據(jù),也可以向URL中發(fā)送數(shù)據(jù)

openStream()只能從網(wǎng)路上讀取資源中的數(shù)據(jù)URLConnection中方法

publicURLConnection

openConnection() publicInputStream

getInputStream() publicOutputStream

getOutputStream()例12-3

程式12-4

socket介面在Java中,基於TCP協(xié)議實(shí)現(xiàn)網(wǎng)路通信的類有兩個(gè):在客戶端的Socket類和在伺服器端的ServerSocket類。SeverSocket類的功能是建立一個(gè)Sever,並通過(guò)accept()方法隨時(shí)監(jiān)聽客戶端的連接請(qǐng)求

類Socket方法構(gòu)造方法Socket的輸入/輸出流管理方法

Socket(InetAddressaddress,intport);Socket(InetAddressaddress,intport,booleanstream);Socket(Stringhost,intport);Socket(Stringhost,intport,booleanstream);

stream則表示該socket是否是支持流的socket

publicInputStreamgetInputStream()publicvoidshutdownInput()publicOutputStreamgetOutputStream()publicvoidshutdownOutput()

Socket的方法

關(guān)閉Socket的方法

設(shè)置/獲取Socket數(shù)據(jù)的方法為

publicvoidclose()throwsIOException

publicInetAddressgetInetAddress()publicintgetPort()publicvoidsetSoTimeout(inttimeout)

類ServerSocket方法

類ServerSocket的構(gòu)造方法

其他方法publicServerSocket(intport)publicServerSocket(intport,intbacklog):支持指定數(shù)目的連接publicServerSocket(intport,intbacklog,InetAddress

bindAddr)publicSocketaccept():等待客戶端的連接socket的基本概念

建立連接當(dāng)程式需要建立網(wǎng)路連接時(shí),必須有一臺(tái)機(jī)器運(yùn)行一個(gè)程式,隨時(shí)等候連接,而另一端的程式則對(duì)其發(fā)出連接請(qǐng)求,同電話系統(tǒng)類似

建立連接的過(guò)程

伺服器端生成一個(gè)ServerSocket實(shí)例對(duì)象,隨時(shí)監(jiān)聽客戶端的連接請(qǐng)求

客戶端生成一個(gè)Socket實(shí)例對(duì)象,併發(fā)出連接請(qǐng)求伺服器端通過(guò)accept()方法接收到客戶端的請(qǐng)求後,開闢一個(gè)介面與之進(jìn)行連接,並生成所需的I/O數(shù)據(jù)流。通信都是通過(guò)一對(duì)InputStream和OutputStream進(jìn)行的。通信結(jié)束後,兩端分別關(guān)閉對(duì)應(yīng)的Socket介面

socket的基本概念連接地址當(dāng)程式建立網(wǎng)路連接時(shí),需要知道地址或主機(jī)名稱。另外,網(wǎng)路連接還需要一個(gè)端口號(hào)

端口號(hào)

在兩個(gè)程式連接之前,彼此之間必須達(dá)成一致,只有客戶端和服務(wù)器端指定端口號(hào)一致時(shí)連接才會(huì)建立網(wǎng)路連接模式

Socket.close()OutputStreamInputStreamServerSocket(port#)ServerSocket.accept()Socker()伺服器Socket.close()OutputStreamInputStreamSocket(host,port#)(attempttoconnect)客戶機(jī)註冊(cè)服務(wù)等待連接socket通信基本步驟

在伺服器端指定一個(gè)用來(lái)等待連接的端口號(hào),在客戶端規(guī)定一個(gè)主機(jī)和端口號(hào), 從而在客戶端和服務(wù)器端創(chuàng)建 Socket/ServerSocket實(shí)例打開連接到Soc

溫馨提示

  • 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)論