




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
任務(wù)五:網(wǎng)絡(luò)聊天程序設(shè)計(jì)單元五:Java語言高級程序設(shè)計(jì)教學(xué)目標(biāo)知識(shí)目標(biāo)網(wǎng)絡(luò)通信的概念;網(wǎng)絡(luò)協(xié)議概念;Socket的概念;網(wǎng)絡(luò)通信編程的步驟。能力目標(biāo)能夠編寫網(wǎng)絡(luò)通信程序;會(huì)進(jìn)行端口操作。內(nèi)容4任務(wù)陳述123知識(shí)準(zhǔn)備任務(wù)實(shí)施任務(wù)拓展任務(wù)實(shí)訓(xùn)51.任務(wù)陳述任務(wù)描述本次任務(wù)要運(yùn)用套接字實(shí)現(xiàn)一個(gè)多人網(wǎng)絡(luò)聊天程序。任務(wù)要求如下:在C/S(客戶端/服務(wù)器)模式下運(yùn)行。服務(wù)器端負(fù)責(zé)監(jiān)聽和轉(zhuǎn)發(fā)客戶端發(fā)送的消息。
實(shí)現(xiàn)聊天記錄的保存和查看。2.知識(shí)準(zhǔn)備5.1網(wǎng)絡(luò)通信與網(wǎng)絡(luò)協(xié)議基礎(chǔ)計(jì)算機(jī)網(wǎng)絡(luò)通常由三個(gè)部分組成,分別是資源子網(wǎng)、通信子網(wǎng)和通信協(xié)議。
通信子網(wǎng):就是計(jì)算機(jī)網(wǎng)絡(luò)中負(fù)責(zé)數(shù)據(jù)通信的部分;資源子網(wǎng):計(jì)算機(jī)網(wǎng)絡(luò)中面向用戶的部分,負(fù)責(zé)全網(wǎng)絡(luò)面向應(yīng)用的數(shù)據(jù)處理工作;
通信協(xié)議:通信雙方必須共同遵守的規(guī)則和約定就稱為通信協(xié)議,它的存在與否是
計(jì)算機(jī)網(wǎng)絡(luò)與一般計(jì)算機(jī)互連系統(tǒng)的根本區(qū)別。2.知識(shí)準(zhǔn)備5.1.1
計(jì)算機(jī)網(wǎng)絡(luò)的體系結(jié)構(gòu)2.知識(shí)準(zhǔn)備5.1.2計(jì)算機(jī)網(wǎng)絡(luò)的協(xié)議所謂協(xié)議(Protocol)就是對數(shù)據(jù)格式和計(jì)算機(jī)之間交換數(shù)據(jù)時(shí)必須遵守的規(guī)則的正式描述。傳輸控制協(xié)議TCP:TCP是一種面向連接的傳輸層協(xié)議。IP協(xié)議(InternetProtocol)網(wǎng)絡(luò)之間互連的協(xié)議的縮寫,中文簡稱為“網(wǎng)協(xié)”。UDP:用戶數(shù)據(jù)報(bào)協(xié)議
。
超文本傳輸協(xié)議
HTTP超文本傳輸協(xié)議HTTP是TCP/IP協(xié)議族的應(yīng)用層協(xié)議。文件傳輸協(xié)議
FTPFTP協(xié)議可以支持文件在網(wǎng)絡(luò)上不同機(jī)器之間的來回拷貝。2.知識(shí)準(zhǔn)備5.2基于TCP/IP的網(wǎng)絡(luò)編程原理在TCP/IP協(xié)議中,TCP提供可靠的連接服務(wù),采用三次握手建立一個(gè)連接。2.知識(shí)準(zhǔn)備5.3TCP/IP網(wǎng)絡(luò)編程相關(guān)類5.3.1Socket類Socket類用于客戶端程序,當(dāng)客戶端與服務(wù)端通訊的時(shí)候,客戶程序會(huì)在客戶端創(chuàng)建一個(gè)Socket對象,建立服務(wù)器和客戶端之間的連接。Socket類的常用構(gòu)造方法:Socket(StringhostName,intport)創(chuàng)建一個(gè)流套接字并將其連接到指定主機(jī)上的指定端口號。Socket(InetAddressa,intport)創(chuàng)建一個(gè)流套接字并將其連接到指定
IP地址的指定端口號。2.知識(shí)準(zhǔn)備5.3.2
ServerSocket類ServerSocket類用于服務(wù)端程序,服務(wù)端需要?jiǎng)?chuàng)建ServerSocket對象監(jiān)聽特定端口,接收客戶連接請求,并基于該請求執(zhí)行某些操作,然后向請求者返回結(jié)果。常用構(gòu)造方法:ServerSocket(intport)創(chuàng)建綁定到特定端口的服務(wù)器套接字。ServerSocket(intport,intmaxqu)創(chuàng)建綁定到特定端口的服務(wù)器套接字,maxqu為隊(duì)列的最大長度。其他常用方法:accept()方法用于等待客戶端觸發(fā)通信close()方法用于關(guān)閉服務(wù)器端建立的套接字。2.知識(shí)準(zhǔn)備5.3.3Socket通信方式利用Socket方式進(jìn)行數(shù)據(jù)通信與傳輸?shù)恼麄€(gè)過程如圖5-18所示:Socket對象代表主叫方,ServerSocket對象代表被叫方,執(zhí)行accept()方法表示同意建立連接。連接一旦建立,會(huì)自動(dòng)創(chuàng)建一個(gè)輸入流和一個(gè)輸出流,通過這兩個(gè)流可以實(shí)現(xiàn)數(shù)據(jù)的發(fā)送。accept()建立連接輸入流輸出流SocketSocket輸入流輸出流ServerSocket2.知識(shí)準(zhǔn)備【例5-20】演示如何創(chuàng)建服務(wù)端程序。要求:服務(wù)器啟動(dòng)后等待客戶端連接,有客戶端連接時(shí),執(zhí)行accept()方法返回一個(gè)Socket對象。通過此Socket對象可獲得輸入流和輸出流。通過輸入流,可獲取客戶端傳入的數(shù)據(jù)。如果獲取的數(shù)據(jù)為“JAVA”,則通過輸出流向客戶端傳送“有效口令”四個(gè)字,否則向客戶端傳送“無效口令”四個(gè)字。2.知識(shí)準(zhǔn)備//省略類的定義和異常處理……ServerSocketss=newServerSocket(4001);Socketso=ss.accept();BufferedReaderb=newBufferedReader(newInputStreamReader(so.getInputStream()));Stringpasswd=b.readLine();Stringresponse;2.知識(shí)準(zhǔn)備if(passwd.equals("JAVA")){ response="有效口令";}else{ response="無效口令";}PrintStreamp=newPrintStream(so.getOutputStream());p.println(response);so.close();……//省略調(diào)用過程2.知識(shí)準(zhǔn)備【例5-21】演示如何創(chuàng)建客戶端程序。要求:通過使用相同的端口號來連接本例的服務(wù)器程序。本例的服務(wù)端與客戶端程序應(yīng)當(dāng)運(yùn)行在同一臺(tái)主機(jī)上,因?yàn)槌绦蛑械腟ocket對象是通過localhost創(chuàng)建的。該客戶端程序從控制臺(tái)讀入用戶輸入信息,將其發(fā)送給服務(wù)器,然后讀取并顯示服務(wù)器返回的信息。2.知識(shí)準(zhǔn)備
//省略類的定義和異常處理……Socketso=newSocket("localhost",4001);BufferedReaderb1=newBufferedReader(newInputStreamReader(System.in));Stringpasswd=b1.readLine();PrintStreamp=newPrintStream(so.getOutputStream());……2.知識(shí)準(zhǔn)備
BufferedReaderb2=newBufferedReader(newInputStreamReader(so.getInputStream()));Stringr=b2.readLine();System.out.println(r);so.close();……//省略調(diào)用過程
3.任務(wù)實(shí)施實(shí)現(xiàn)思路綜合運(yùn)用流、線程和Socket技術(shù)實(shí)現(xiàn)本任務(wù)中的網(wǎng)絡(luò)聊天程序。把服務(wù)端程序定義為ChatServer,先于客戶端程序運(yùn)行,監(jiān)聽并接受多個(gè)客戶端的連接。把客戶端程序定義為ChatClient,負(fù)責(zé)將用戶的輸入信息發(fā)送到服務(wù)端。服務(wù)端程序接受客戶信息并將其轉(zhuǎn)發(fā)給其他客戶端。定義Client類實(shí)現(xiàn)Runnable接口,作為客戶端代理,目的是在服務(wù)器端為每個(gè)客戶端創(chuàng)建一個(gè)單獨(dú)的通信線程。定義ChatServer類,等待客戶的連接請求,用列表clients保存客戶端代理,每次和一個(gè)客戶端建立連接,創(chuàng)建一個(gè)代理對象放入列表clients中。定義ChatClient類繼承JFrame,實(shí)現(xiàn)客戶端界面,與服務(wù)器建立連接,接收用戶輸入發(fā)送給服務(wù)器并顯示服務(wù)器發(fā)送來的信息。3.任務(wù)實(shí)施Client類run()的關(guān)鍵代碼Stringstr=dis.readUTF();//阻塞式方式Stringprefix=“Client_”+client_no+“:”;str=prefix+str;System.out.println(str);for(inti=0;i<clients.size();i++){ Clientc=clients.get(i);//獲取客戶端代理 c.send(str); if(log!=null&&c==this) {//省略異常處理 log.writeBytes(str+"\r\n");//保存記錄 }} 3.任務(wù)實(shí)施服務(wù)器端關(guān)鍵代碼ss=newServerSocket(8888);stat=true;while(stat){ Sockets=ss.accept(); …… //每建立一個(gè)客戶端,就創(chuàng)建一個(gè)客戶端對象,啟動(dòng)一個(gè)線程 Clientc=newClient(s,maxClientNo++); newThread(c).start(); clients.add(c);//將每個(gè)客戶端加入到容器里 }} 3.任務(wù)實(shí)施客戶端關(guān)鍵代碼s=newSocket("",8888); //s為局部變量……dos=newDataOutputStream(s.getOutputStream());dis=newDataInputStream(s.getInputStream());
4.任務(wù)拓展
域名系統(tǒng)(DNS):
將特定IP地址映射至字符串,比如2域名為。
域名的優(yōu)點(diǎn):
方便人的記憶,域名到IP地址的映射和轉(zhuǎn)換由域名服務(wù)器系統(tǒng)維護(hù)。InetAddress類:
封裝了IP地址和DNS,創(chuàng)建實(shí)例不是使用構(gòu)造方法,而是要使用其提供的
工廠方法:InetAddressgetLocalHost()和InetAddressgetByName(StringHostName)。4.任務(wù)拓展【例5-22】演示InetAddress類的用法。要求:
獲取并顯示了本機(jī)和新浪網(wǎng)的IP地址。運(yùn)行此程序,要求電腦能夠聯(lián)通互聯(lián)網(wǎng),否則需要給新浪網(wǎng)那行代碼加上注釋,不然會(huì)出異常的。InetAddressadd=InetAddress.getLocalHost();System.out.println("本主機(jī)的地址是"+add);System.out.println(“新浪網(wǎng)的地址是”+add.getByName(“”));一、實(shí)訓(xùn)目的掌握創(chuàng)建基于TCP有連接的網(wǎng)絡(luò)應(yīng)用程序;掌握
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字化技術(shù)賦能2025年零售門店智能化數(shù)據(jù)分析與消費(fèi)者洞察報(bào)告
- 公共圖書館服務(wù)提升實(shí)施方案評估報(bào)告2025:兒童閱讀推廣策略研究
- 2025年音樂課程教學(xué)計(jì)劃與評價(jià)標(biāo)準(zhǔn)
- 2025年保險(xiǎn)行業(yè)數(shù)字化理賠服務(wù)智能理賠與行業(yè)競爭力分析報(bào)告
- 人教版數(shù)學(xué)教學(xué)計(jì)劃評估與反思
- 三年級音樂與其他學(xué)科融合計(jì)劃
- 放射科設(shè)備使用與維護(hù)培訓(xùn)計(jì)劃
- 創(chuàng)新型三年級美術(shù)教學(xué)策略計(jì)劃
- 農(nóng)業(yè)生物技術(shù)助力種業(yè)變革2025年應(yīng)用前景深度解讀報(bào)告
- 2025年互聯(lián)網(wǎng)醫(yī)療平臺(tái)在線問診服務(wù)滿意度調(diào)查報(bào)告
- 浙江省金華市2025屆六年級下學(xué)期5月模擬預(yù)測數(shù)學(xué)試題含解析
- 關(guān)節(jié)科考試試題及答案
- 2025新高考地理復(fù)習(xí)十大時(shí)事熱點(diǎn)及命題預(yù)測(學(xué)生版+解析版)
- 診所應(yīng)急知識(shí)培訓(xùn)課件
- 央行MPA考核細(xì)則
- 2025-2030全球及中國自動(dòng)入侵與攻擊模擬行業(yè)市場現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報(bào)告
- 大數(shù)據(jù)時(shí)代統(tǒng)計(jì)信息安全挑戰(zhàn)與應(yīng)對策略研究
- 2025年攪拌車市場規(guī)模分析
- 高處作業(yè)風(fēng)險(xiǎn)及隱患排查(安全檢查)清單
- 網(wǎng)絡(luò)與信息安全突發(fā)事件應(yīng)急預(yù)案演練記錄
- 超星爾雅學(xué)習(xí)通《生態(tài)文明-撐起美麗中國夢(福建農(nóng)林大學(xué))》2025章節(jié)測試附答案
評論
0/150
提交評論