Java的網(wǎng)絡(luò)功能課件_第1頁
Java的網(wǎng)絡(luò)功能課件_第2頁
Java的網(wǎng)絡(luò)功能課件_第3頁
Java的網(wǎng)絡(luò)功能課件_第4頁
Java的網(wǎng)絡(luò)功能課件_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Java的網(wǎng)絡(luò)功能

概述

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

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

概述IP地址

網(wǎng)絡(luò)中的硬件資源標識

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

端口號(port)標記機器的邏輯通信信道的正整數(shù),不是物理實體一個16位的整數(shù)表達,其范圍為0~65535,其中0~1023為系統(tǒng)所保留

Socket(套接字)網(wǎng)絡(luò)上運行的程序之間雙向通信鏈路的最后終結(jié)點,是TCP和UDP的基礎(chǔ)

概述TCP協(xié)議具有可靠性和有序性,并且以字節(jié)流的方式發(fā)送數(shù)據(jù),它通常被稱為流通信協(xié)議。端點與端點之間建立持續(xù)的連接當對所傳輸?shù)臄?shù)據(jù)具有時序性和可靠性等要求時,應(yīng)使用TCP協(xié)議用戶數(shù)據(jù)報協(xié)議UDP一種無連接的傳輸協(xié)議

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

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

InetAddress

面向IP層,用于標識網(wǎng)絡(luò)上的硬件資源URL

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

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

Datagram

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

主要的類及例外

使用InetAddress

構(gòu)造一個InetAddress實例沒有構(gòu)造函數(shù),因此不能用new來構(gòu)造

publicstaticInetAddressgetByName(Stringhost);

publicstaticInetAddressgetLocalHost();publicstaticInetAddress[]getAllByName(Stringhost)

host可以是一臺機器名,也可以是一個形如“%d.%d.%d.%d”的IP地址或一個DSN域名。

InetAddress類主要方法

publicbyte[]getAddress()獲得本對象的IP地址(存放在字節(jié)數(shù)組中)publicStringgetHostAddress()獲得本對象的IP地址“%d.%d.%d.%d”publicStringgetHostName()獲得本對象的機器名程序12-1

演示Java如何根據(jù)域名自動到DNS(域名服務(wù))上查找IP地址程序12-1

執(zhí)行GetIP后,可以得到下列信息:

www.nankai.edu.cn/3

獲取本機的IP地址

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

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

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

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

Protocol:resourceName

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

protocol://host_name:port_number/file_name/reference

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

用來指示連接時所使用的通信端口號file_name: 用來指示該資源在主機的完整文件名reference: 指示資源中的某個特定位置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)

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

publicURL(URLcontext,Stringspec)

可以表示相對URL位置的定義

第一個參數(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)

直接指定每個域的內(nèi)容,而不是直接給出一個字符串來表示。必須給出確定的傳輸協(xié)議、機器名稱、文件名,或者加上端口號

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

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

類URL的構(gòu)造方法中都聲明拋出非運行時異?!狹alformedURLException

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

StringgetHost()

獲取機器名稱

StringgetPort()

獲取通信端口號

StringgetFile()

獲取資源文件名稱

StringgetRef()

獲取參考點下面的兩個方法將URL對象的內(nèi)容以字符串的形式來表示,它們的作用是相同的

StringtoString() StringtoExternalForm()

程序12-2

程序12-2中創(chuàng)建了一個URL對象,然后輸出其屬性

讀入URL數(shù)據(jù)

openStream()方法

讀取一個URL對象所指定的資源。與指定的URL建立連接并返回一個InputStream對象程序12-3在命令行中指定一個合理的文件名,便可以顯示出文件的內(nèi)容,其功能類似于DOS中的type命令A(yù)pplet中網(wǎng)絡(luò)通訊

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

應(yīng)用程序和URL資源之間進行交互

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

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

publicURLConnection

openConnection() publicInputStream

getInputStream() publicOutputStream

getOutputStream()例12-3

程序12-4

socket接口在Java中,基于TCP協(xié)議實現(xiàn)網(wǎng)絡(luò)通信的類有兩個:在客戶端的Socket類和在服務(wù)器端的ServerSocket類。SeverSocket類的功能是建立一個Sever,并通過accept()方法隨時監(jiān)聽客戶端的連接請求

類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的基本概念

建立連接當程序需要建立網(wǎng)絡(luò)連接時,必須有一臺機器運行一個程序,隨時等候連接,而另一端的程序則對其發(fā)出連接請求,同電話系統(tǒng)類似

建立連接的過程

服務(wù)器端生成一個ServerSocket實例對象,隨時監(jiān)聽客戶端的連接請求

客戶端生成一個Socket實例對象,并發(fā)出連接請求服務(wù)器端通過accept()方法接收到客戶端的請求后,開辟一個接口與之進行連接,并生成所需的I/O數(shù)據(jù)流。通信都是通過一對InputStream和OutputStream進行的。通信結(jié)束后,兩端分別關(guān)閉對應(yīng)的Socket接口

socket的基本概念連接地址當程序建立網(wǎng)絡(luò)連接時,需要知道地址或主機名稱。另外,網(wǎng)絡(luò)連接還需要一個端口號

端口號

在兩個程序連接之前,彼此之間必須達成一致,只有客戶端和服務(wù)器端指定端口號一致時連接才會建立網(wǎng)絡(luò)連接模式

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

在服務(wù)器端指定一個用來等待連接的端口號,在客戶端規(guī)定一個主機和端口號, 從而在客戶端和服務(wù)器端創(chuàng)建 Socket/ServerSocket實例打開連接到Sock

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論