第十七socket通訊_第1頁(yè)
第十七socket通訊_第2頁(yè)
第十七socket通訊_第3頁(yè)
第十七socket通訊_第4頁(yè)
第十七socket通訊_第5頁(yè)
已閱讀5頁(yè),還剩32頁(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)介

1、KYIT V1.01Java-socket網(wǎng)絡(luò)編程第十七章KYIT V1.02本節(jié)目標(biāo)網(wǎng)絡(luò)編程基礎(chǔ)Socket實(shí)現(xiàn)網(wǎng)絡(luò)通訊KYIT V1.03跨機(jī)器環(huán)境編程從歷史上看,從歷史上看,跨機(jī)器環(huán)境編程,容易出錯(cuò),難度高,跨機(jī)器環(huán)境編程,容易出錯(cuò),難度高,復(fù)雜,工作之繁復(fù)令人望而怯步。復(fù)雜,工作之繁復(fù)令人望而怯步。自他處某部機(jī)器取得信息,并將信息移至你所在的自他處某部機(jī)器取得信息,并將信息移至你所在的機(jī)器上,或進(jìn)行相反的動(dòng)作,可通過(guò)網(wǎng)絡(luò)程序設(shè)計(jì)機(jī)器上,或進(jìn)行相反的動(dòng)作,可通過(guò)網(wǎng)絡(luò)程序設(shè)計(jì)來(lái)完成。來(lái)完成。這個(gè)題目的涉及范圍很大,我們將做核心而簡(jiǎn)要的學(xué)習(xí)。這個(gè)題目的涉及范圍很大,我們將做核心而簡(jiǎn)要的學(xué)習(xí)。

2、KYIT V1.04網(wǎng)絡(luò)編程Java網(wǎng)絡(luò)程序庫(kù)的用法和文件讀寫非常相似,只網(wǎng)絡(luò)程序庫(kù)的用法和文件讀寫非常相似,只不過(guò)現(xiàn)在的這個(gè)不過(guò)現(xiàn)在的這個(gè)“文件文件”是位于遠(yuǎn)端機(jī)器,而遠(yuǎn)端是位于遠(yuǎn)端機(jī)器,而遠(yuǎn)端機(jī)器有權(quán)決定你所請(qǐng)求或傳送的信息該如何處理。機(jī)器有權(quán)決定你所請(qǐng)求或傳送的信息該如何處理。底層和網(wǎng)絡(luò)相關(guān)的細(xì)節(jié)已經(jīng)被盡可能抽象化,并底層和網(wǎng)絡(luò)相關(guān)的細(xì)節(jié)已經(jīng)被盡可能抽象化,并由由JVM和本機(jī)上的和本機(jī)上的Java處理掉。我們所使用的處理掉。我們所使用的編程模型和處理文件的時(shí)候相同。編程模型和處理文件的時(shí)候相同。KYIT V1.05Java對(duì)通信編程的支持java對(duì)通信編程的支持,在較低層次上是對(duì)通信編程

3、的支持,在較低層次上是InetAddress類和類和Socket相關(guān)類,在較高層次上是相關(guān)類,在較高層次上是URL類。類。包是包是java2標(biāo)準(zhǔn)類庫(kù)的一部分,它提供了實(shí)現(xiàn)標(biāo)準(zhǔn)類庫(kù)的一部分,它提供了實(shí)現(xiàn)網(wǎng)絡(luò)應(yīng)用所必須的類,以及輔助的接口和異常。網(wǎng)絡(luò)應(yīng)用所必須的類,以及輔助的接口和異常。KYIT V1.06網(wǎng)絡(luò)q實(shí)現(xiàn)資源共享和通信q連接終端系統(tǒng)(主機(jī))的通信系統(tǒng)KYIT V1.07網(wǎng)絡(luò)適配器q計(jì)算機(jī)通過(guò)線纜連接q網(wǎng)絡(luò)接口卡 (NIC) 用于將計(jì)算機(jī)連接至線纜,也稱為網(wǎng)絡(luò)適配器KYIT V1.08協(xié)議q網(wǎng)絡(luò)中計(jì)算機(jī)之間通信的規(guī)則q常用的協(xié)議q超文本傳輸協(xié)議 (HTTP)q文件傳輸協(xié)議 (FTP)q簡(jiǎn)

4、單郵件傳輸協(xié)議 (SMTP)q網(wǎng)絡(luò)新聞傳輸協(xié)議 (NNTP)q郵局協(xié)議 (POP3)q遠(yuǎn)程登陸協(xié)議 (telnet)q域名服務(wù) (DNS)KYIT V1.09機(jī)器的識(shí)別為了區(qū)別不同的機(jī)器,必須有辦法識(shí)別出網(wǎng)絡(luò)上為了區(qū)別不同的機(jī)器,必須有辦法識(shí)別出網(wǎng)絡(luò)上獨(dú)一無(wú)二的機(jī)器。獨(dú)一無(wú)二的機(jī)器。如今如今Java運(yùn)作于運(yùn)作于Internet上,需要一種能夠識(shí)別全上,需要一種能夠識(shí)別全世界機(jī)器的方法。世界機(jī)器的方法。這個(gè)方法就是通過(guò)這個(gè)方法就是通過(guò)IP地址來(lái)識(shí)別與訪問機(jī)器。地址來(lái)識(shí)別與訪問機(jī)器。KYIT V1.010機(jī)器的識(shí)別:IP地址一般的一般的Internet Web服務(wù)器應(yīng)該有固定的服務(wù)器應(yīng)該有固定的I

5、P地址;地址;如果你是撥號(hào)上網(wǎng),如果你是撥號(hào)上網(wǎng),ISP(Internet 服務(wù)供應(yīng)商服務(wù)供應(yīng)商)會(huì)指派會(huì)指派一個(gè)臨時(shí)的一個(gè)臨時(shí)的IP地址給你。當(dāng)你連上網(wǎng)絡(luò)的時(shí)候,這個(gè)地址給你。當(dāng)你連上網(wǎng)絡(luò)的時(shí)候,這個(gè)IP地址和地址和 Internet上的其他上的其他IP地址具有同等效力。地址具有同等效力。如果告訴你的朋友這個(gè)如果告訴你的朋友這個(gè)IP地址,并且你的電腦已經(jīng)有地址,并且你的電腦已經(jīng)有Web服務(wù)器,那么他就可以連上服務(wù)器,那么他就可以連上“http:/你的你的IP地址地址”的的的網(wǎng)址。當(dāng)然只有這次撥接連線期間才可以。的網(wǎng)址。當(dāng)然只有這次撥接連線期間才可以。KYIT V1.011IP與DNSqIP

6、地址地址q連接至網(wǎng)絡(luò)的每臺(tái)計(jì)算機(jī)都是唯一的連接至網(wǎng)絡(luò)的每臺(tái)計(jì)算機(jī)都是唯一的q32 位數(shù)字,四個(gè)用點(diǎn)號(hào)分隔的數(shù)字位數(shù)字,四個(gè)用點(diǎn)號(hào)分隔的數(shù)字q域名系統(tǒng)域名系統(tǒng)q將特定將特定 IP 地址映射至字符串地址映射至字符串q映射由域名服務(wù)器系統(tǒng)維護(hù)映射由域名服務(wù)器系統(tǒng)維護(hù)KYIT V1.012InetAdress類InetAddress是表示是表示IP地址的類。地址的類。我們通常使用它的靜態(tài)方法我們通常使用它的靜態(tài)方法getByName(String host),來(lái),來(lái)使用機(jī)器名稱得到使用機(jī)器名稱得到InetAddress對(duì)象。對(duì)象。我們可以使用我們可以使用InetAddress類對(duì)象的方法來(lái)得到類對(duì)象的

7、方法來(lái)得到IP地址。地址。Static InetAddress getLocalHost()Static InetAddress getByName(String HostName)KYIT V1.013機(jī)器的識(shí)別:IP地址KYIT V1.014服務(wù)端和客戶端網(wǎng)絡(luò)的用途就是讓兩部機(jī)器得以連接并彼此通信。網(wǎng)絡(luò)的用途就是讓兩部機(jī)器得以連接并彼此通信。這種情況就像在游樂園中迷路一樣:有一部機(jī)器待這種情況就像在游樂園中迷路一樣:有一部機(jī)器待在某個(gè)固定地點(diǎn),并且傾聽另一部機(jī)器的詢問:在某個(gè)固定地點(diǎn),并且傾聽另一部機(jī)器的詢問:“嘿,你在哪兒?嘿,你在哪兒?”定點(diǎn)的機(jī)器稱為定點(diǎn)的機(jī)器稱為“服務(wù)器服務(wù)器”,而

8、尋找它的那一部機(jī)器,而尋找它的那一部機(jī)器則被稱為則被稱為“客戶端客戶端“,一旦二者完成連接,其間的,一旦二者完成連接,其間的通信即屬雙向通信,而二者之間究竟誰(shuí)扮演服務(wù)器,通信即屬雙向通信,而二者之間究竟誰(shuí)扮演服務(wù)器,誰(shuí)扮演客戶端也就無(wú)關(guān)緊要。誰(shuí)扮演客戶端也就無(wú)關(guān)緊要。KYIT V1.015沒有網(wǎng)絡(luò)的情況在我們的計(jì)算機(jī)沒有連接網(wǎng)絡(luò)的時(shí)候,我們依然在我們的計(jì)算機(jī)沒有連接網(wǎng)絡(luò)的時(shí)候,我們依然可以編寫網(wǎng)絡(luò)程序進(jìn)行測(cè)試??梢跃帉懢W(wǎng)絡(luò)程序進(jìn)行測(cè)試。網(wǎng)際網(wǎng)絡(luò)通信協(xié)議的創(chuàng)造者專門創(chuàng)造了一個(gè)叫做網(wǎng)際網(wǎng)絡(luò)通信協(xié)議的創(chuàng)造者專門創(chuàng)造了一個(gè)叫做localhost的特殊地址,在缺少網(wǎng)絡(luò)的情況下作為的特殊地址,在缺少網(wǎng)絡(luò)的

9、情況下作為測(cè)試用的本機(jī)回路測(cè)試用的本機(jī)回路IP地址,并為此保留地址,并為此保留作為作為IP地址。地址。KYIT V1.016port:機(jī)器中獨(dú)一無(wú)二的地點(diǎn)同一臺(tái)機(jī)器上可能存在多個(gè)服務(wù)器。客戶端知道同一臺(tái)機(jī)器上可能存在多個(gè)服務(wù)器。客戶端知道如何通過(guò)如何通過(guò)IP地址連接到機(jī)器,但是如何才能連上地址連接到機(jī)器,但是如何才能連上它想要的網(wǎng)絡(luò)服務(wù)呢?它想要的網(wǎng)絡(luò)服務(wù)呢?port并非機(jī)器上實(shí)際存在的位置,而是一種軟件并非機(jī)器上實(shí)際存在的位置,而是一種軟件上的抽象概念,通常在給定的服務(wù)器機(jī)器上,上的抽象概念,通常在給定的服務(wù)器機(jī)器上,每個(gè)服務(wù)都會(huì)對(duì)應(yīng)一個(gè)不與其他服務(wù)沖突的每個(gè)服務(wù)都會(huì)對(duì)應(yīng)一

10、個(gè)不與其他服務(wù)沖突的port??蛻舳吮仨毷孪戎浪胍褂玫目蛻舳吮仨毷孪戎浪胍褂玫膒ort號(hào)碼。號(hào)碼。系統(tǒng)服務(wù)保留系統(tǒng)服務(wù)保留1-1024個(gè)個(gè)port,我們不能用這些。,我們不能用這些。KYIT V1.017端口q用于實(shí)現(xiàn)程序間的通信q常用的端口協(xié)議端口Telnet協(xié)議23簡(jiǎn)單郵件傳輸協(xié)議25文件傳輸協(xié)議21超文本傳輸協(xié)議80KYIT V1.018套接字q是 Internet 通信的端點(diǎn)q與主機(jī)地址和端口地址相關(guān)聯(lián)q客戶端和服務(wù)器通過(guò)套接字建立連接和進(jìn)行通信qTCP/IP 套接字qUDP 套接字KYIT V1.019TCP與UDPTCP傳輸控制協(xié)議,具有極高的可靠性,保證數(shù)據(jù)傳輸控

11、制協(xié)議,具有極高的可靠性,保證數(shù)據(jù) 包按照順序準(zhǔn)確到達(dá),但其也有著很高的額外包按照順序準(zhǔn)確到達(dá),但其也有著很高的額外 負(fù)擔(dān)。負(fù)擔(dān)。UDP使用者數(shù)據(jù)元協(xié)議,并不能保證數(shù)據(jù)包會(huì)被使用者數(shù)據(jù)元協(xié)議,并不能保證數(shù)據(jù)包會(huì)被 成功的送達(dá),也不保證數(shù)據(jù)包到達(dá)的順序,但成功的送達(dá),也不保證數(shù)據(jù)包到達(dá)的順序,但 其傳輸速度很快。其傳輸速度很快。大多數(shù)我們會(huì)使用大多數(shù)我們會(huì)使用TCP,偶爾才會(huì)動(dòng)用,偶爾才會(huì)動(dòng)用UDP,如聲音訊,如聲音訊號(hào),即使少量遺失,也無(wú)關(guān)緊要。號(hào),即使少量遺失,也無(wú)關(guān)緊要。KYIT V1.020Sockets:插座 Sockets是一個(gè)軟件中的抽象概念,用來(lái)代表兩部是一個(gè)軟件中的抽象概念,用

12、來(lái)代表兩部機(jī)器之間的連線終端。機(jī)器之間的連線終端。我們可以想象兩部機(jī)器之間有一條假想的纜線,我們可以想象兩部機(jī)器之間有一條假想的纜線,纜線兩端插在某給插座(纜線兩端插在某給插座(Socket)上。)上。包中提供了包中提供了Socket和和ServerSocet類,分別類,分別實(shí)現(xiàn)了實(shí)現(xiàn)了TCP/IP通信的客戶端與服務(wù)器端。通信的客戶端與服務(wù)器端。KYIT V1.021Socket 類 有兩種有兩種socket類:類:ServerSocket讓服務(wù)器來(lái)傾聽連線。讓服務(wù)器來(lái)傾聽連線。Socket讓客戶端來(lái)建立連線。讓客戶端來(lái)建立連線。當(dāng)客戶端建立連線后,當(dāng)客戶端建立連線后,ServerSocket

13、便會(huì)使用便會(huì)使用accept()方法返回的方法返回的Socket,通過(guò)它可以開始通信。,通過(guò)它可以開始通信。KYIT V1.022關(guān)于accept()一旦一旦ServerSocket對(duì)象建立,就可以調(diào)用對(duì)象建立,就可以調(diào)用accept()方法方法等待,直到有一個(gè)客戶程序請(qǐng)求連接到服務(wù)器正在等待,直到有一個(gè)客戶程序請(qǐng)求連接到服務(wù)器正在監(jiān)聽的端口上。監(jiān)聽的端口上。當(dāng)當(dāng)accept()方法與客戶端成功建立連接后,它將返回方法與客戶端成功建立連接后,它將返回一個(gè)新的一個(gè)新的Socket對(duì)象,在新的對(duì)象,在新的Socket對(duì)象上建立輸入、對(duì)象上建立輸入、輸出流,服務(wù)器就可以與客戶端通信了。輸出流,服務(wù)器

14、就可以與客戶端通信了。KYIT V1.023簡(jiǎn)單實(shí)驗(yàn) 客戶端從鍵盤接受一個(gè)字符串,將其發(fā)送至服務(wù)器,客戶端從鍵盤接受一個(gè)字符串,將其發(fā)送至服務(wù)器,服務(wù)器在該字符串前加上服務(wù)器在該字符串前加上”You have said: “后返回給后返回給客戶端,客戶端將新的字符串在屏幕上打印出來(lái)。客戶端,客戶端將新的字符串在屏幕上打印出來(lái)。KYIT V1.024簡(jiǎn)單實(shí)驗(yàn):服務(wù)端KYIT V1.025簡(jiǎn)單實(shí)驗(yàn):服務(wù)端KYIT V1.026簡(jiǎn)單實(shí)驗(yàn):客戶端KYIT V1.027簡(jiǎn)單實(shí)驗(yàn):客戶端KYIT V1.028簡(jiǎn)單實(shí)驗(yàn):服務(wù)端KYIT V1.029簡(jiǎn)單實(shí)驗(yàn):客戶端KYIT V1.030套接字SOCKET總結(jié)

15、是是 Internet Internet 通信的端點(diǎn)通信的端點(diǎn)與主機(jī)地址和端口地址相關(guān)聯(lián)與主機(jī)地址和端口地址相關(guān)聯(lián)客戶端和服務(wù)器通過(guò)套接字建立連接和進(jìn)行客戶端和服務(wù)器通過(guò)套接字建立連接和進(jìn)行TCP/IP TCP/IP 套接字套接字較可靠的雙向流協(xié)議較可靠的雙向流協(xié)議發(fā)送任意數(shù)量的數(shù)據(jù)發(fā)送任意數(shù)量的數(shù)據(jù)提供消息確認(rèn)、錯(cuò)誤檢測(cè)和錯(cuò)誤恢復(fù)等服務(wù)提供消息確認(rèn)、錯(cuò)誤檢測(cè)和錯(cuò)誤恢復(fù)等服務(wù)UDP UDP 套接字套接字比較不可靠比較不可靠KYIT V1.031java實(shí)現(xiàn)網(wǎng)絡(luò)通訊 包可以大致分為兩個(gè)部分:包可以大致分為兩個(gè)部分:低級(jí)低級(jí) APIAPI,用于處理以下抽象:,用于處理以下抽象:地址,也就是網(wǎng)絡(luò)標(biāo)識(shí)

16、符,如地址,也就是網(wǎng)絡(luò)標(biāo)識(shí)符,如 IP IP 地址。地址。套接字,也就是基本雙向數(shù)據(jù)通信機(jī)制。套接字,也就是基本雙向數(shù)據(jù)通信機(jī)制。接口,用于描述網(wǎng)絡(luò)接口。接口,用于描述網(wǎng)絡(luò)接口。高級(jí)高級(jí) APIAPI,用于處理以下抽象:,用于處理以下抽象:URIURI,表示統(tǒng)一資源標(biāo)識(shí)符。,表示統(tǒng)一資源標(biāo)識(shí)符。URLURL,表示統(tǒng)一資源定位符。,表示統(tǒng)一資源定位符。連接,表示到連接,表示到 URL URL 所指向資源的連接。所指向資源的連接。地址地址KYIT V1.032J包-地址KYIT V1.033Web相關(guān)類:URL類URL類代表了統(tǒng)一資源定位器,就是網(wǎng)絡(luò)上某資源類代表了統(tǒng)一資源定位器,就是網(wǎng)絡(luò)上某資源的地址。的地址。Apple

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論