




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
任務(wù)五:網(wǎng)絡(luò)聊天程序設(shè)計單元五:Java語言高級程序設(shè)計教學(xué)目標知識目標網(wǎng)絡(luò)通信的概念;網(wǎng)絡(luò)協(xié)議概念;Socket的概念;網(wǎng)絡(luò)通信編程的步驟。能力目標能夠編寫網(wǎng)絡(luò)通信程序;會進行端口操作。內(nèi)容4任務(wù)陳述123知識準備任務(wù)實施任務(wù)拓展任務(wù)實訓(xùn)51.任務(wù)陳述任務(wù)描述本次任務(wù)要運用套接字實現(xiàn)一個多人網(wǎng)絡(luò)聊天程序。任務(wù)要求如下:在C/S(客戶端/服務(wù)器)模式下運行。服務(wù)器端負責監(jiān)聽和轉(zhuǎn)發(fā)客戶端發(fā)送的消息。
實現(xiàn)聊天記錄的保存和查看。2.知識準備5.1網(wǎng)絡(luò)通信與網(wǎng)絡(luò)協(xié)議基礎(chǔ)計算機網(wǎng)絡(luò)通常由三個部分組成,分別是資源子網(wǎng)、通信子網(wǎng)和通信協(xié)議。
通信子網(wǎng):就是計算機網(wǎng)絡(luò)中負責數(shù)據(jù)通信的部分;資源子網(wǎng):計算機網(wǎng)絡(luò)中面向用戶的部分,負責全網(wǎng)絡(luò)面向應(yīng)用的數(shù)據(jù)處理工作;
通信協(xié)議:通信雙方必須共同遵守的規(guī)則和約定就稱為通信協(xié)議,它的存在與否是
計算機網(wǎng)絡(luò)與一般計算機互連系統(tǒng)的根本區(qū)別。2.知識準備5.1.1
計算機網(wǎng)絡(luò)的體系結(jié)構(gòu)2.知識準備5.1.2計算機網(wǎng)絡(luò)的協(xié)議所謂協(xié)議(Protocol)就是對數(shù)據(jù)格式和計算機之間交換數(shù)據(jù)時必須遵守的規(guī)則的正式描述。傳輸控制協(xié)議TCP:TCP是一種面向連接的傳輸層協(xié)議。IP協(xié)議(InternetProtocol)網(wǎng)絡(luò)之間互連的協(xié)議的縮寫,中文簡稱為“網(wǎng)協(xié)”。UDP:用戶數(shù)據(jù)報協(xié)議
。
超文本傳輸協(xié)議
HTTP超文本傳輸協(xié)議HTTP是TCP/IP協(xié)議族的應(yīng)用層協(xié)議。文件傳輸協(xié)議
FTPFTP協(xié)議可以支持文件在網(wǎng)絡(luò)上不同機器之間的來回拷貝。2.知識準備5.2基于TCP/IP的網(wǎng)絡(luò)編程原理在TCP/IP協(xié)議中,TCP提供可靠的連接服務(wù),采用三次握手建立一個連接。2.知識準備5.3TCP/IP網(wǎng)絡(luò)編程相關(guān)類5.3.1Socket類Socket類用于客戶端程序,當客戶端與服務(wù)端通訊的時候,客戶程序會在客戶端創(chuàng)建一個Socket對象,建立服務(wù)器和客戶端之間的連接。Socket類的常用構(gòu)造方法:Socket(StringhostName,intport)創(chuàng)建一個流套接字并將其連接到指定主機上的指定端口號。Socket(InetAddressa,intport)創(chuàng)建一個流套接字并將其連接到指定
IP地址的指定端口號。2.知識準備5.3.2
ServerSocket類ServerSocket類用于服務(wù)端程序,服務(wù)端需要創(chuàng)建ServerSocket對象監(jiān)聽特定端口,接收客戶連接請求,并基于該請求執(zhí)行某些操作,然后向請求者返回結(jié)果。常用構(gòu)造方法:ServerSocket(intport)創(chuàng)建綁定到特定端口的服務(wù)器套接字。ServerSocket(intport,intmaxqu)創(chuàng)建綁定到特定端口的服務(wù)器套接字,maxqu為隊列的最大長度。其他常用方法:accept()方法用于等待客戶端觸發(fā)通信close()方法用于關(guān)閉服務(wù)器端建立的套接字。2.知識準備5.3.3Socket通信方式利用Socket方式進行數(shù)據(jù)通信與傳輸?shù)恼麄€過程如圖5-18所示:Socket對象代表主叫方,ServerSocket對象代表被叫方,執(zhí)行accept()方法表示同意建立連接。連接一旦建立,會自動創(chuàng)建一個輸入流和一個輸出流,通過這兩個流可以實現(xiàn)數(shù)據(jù)的發(fā)送。accept()建立連接輸入流輸出流SocketSocket輸入流輸出流ServerSocket2.知識準備【例5-20】演示如何創(chuàng)建服務(wù)端程序。要求:服務(wù)器啟動后等待客戶端連接,有客戶端連接時,執(zhí)行accept()方法返回一個Socket對象。通過此Socket對象可獲得輸入流和輸出流。通過輸入流,可獲取客戶端傳入的數(shù)據(jù)。如果獲取的數(shù)據(jù)為“JAVA”,則通過輸出流向客戶端傳送“有效口令”四個字,否則向客戶端傳送“無效口令”四個字。2.知識準備//省略類的定義和異常處理……ServerSocketss=newServerSocket(4001);Socketso=ss.accept();BufferedReaderb=newBufferedReader(newInputStreamReader(so.getInputStream()));Stringpasswd=b.readLine();Stringresponse;2.知識準備if(passwd.equals("JAVA")){ response="有效口令";}else{ response="無效口令";}PrintStreamp=newPrintStream(so.getOutputStream());p.println(response);so.close();……//省略調(diào)用過程2.知識準備【例5-21】演示如何創(chuàng)建客戶端程序。要求:通過使用相同的端口號來連接本例的服務(wù)器程序。本例的服務(wù)端與客戶端程序應(yīng)當運行在同一臺主機上,因為程序中的Socket對象是通過localhost創(chuàng)建的。該客戶端程序從控制臺讀入用戶輸入信息,將其發(fā)送給服務(wù)器,然后讀取并顯示服務(wù)器返回的信息。2.知識準備
//省略類的定義和異常處理……Socketso=newSocket("localhost",4001);BufferedReaderb1=newBufferedReader(newInputStreamReader(System.in));Stringpasswd=b1.readLine();PrintStreamp=newPrintStream(so.getOutputStream());……2.知識準備
BufferedReaderb2=newBufferedReader(newInputStreamReader(so.getInputStream()));Stringr=b2.readLine();System.out.println(r);so.close();……//省略調(diào)用過程
3.任務(wù)實施實現(xiàn)思路綜合運用流、線程和Socket技術(shù)實現(xiàn)本任務(wù)中的網(wǎng)絡(luò)聊天程序。把服務(wù)端程序定義為ChatServer,先于客戶端程序運行,監(jiān)聽并接受多個客戶端的連接。把客戶端程序定義為ChatClient,負責將用戶的輸入信息發(fā)送到服務(wù)端。服務(wù)端程序接受客戶信息并將其轉(zhuǎn)發(fā)給其他客戶端。定義Client類實現(xiàn)Runnable接口,作為客戶端代理,目的是在服務(wù)器端為每個客戶端創(chuàng)建一個單獨的通信線程。定義ChatServer類,等待客戶的連接請求,用列表clients保存客戶端代理,每次和一個客戶端建立連接,創(chuàng)建一個代理對象放入列表clients中。定義ChatClient類繼承JFrame,實現(xiàn)客戶端界面,與服務(wù)器建立連接,接收用戶輸入發(fā)送給服務(wù)器并顯示服務(wù)器發(fā)送來的信息。3.任務(wù)實施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ù)實施服務(wù)器端關(guān)鍵代碼ss=newServerSocket(8888);stat=true;while(stat){ Sockets=ss.accept(); …… //每建立一個客戶端,就創(chuàng)建一個客戶端對象,啟動一個線程 Clientc=newClient(s,maxClientNo++); newThread(c).start(); clients.add(c);//將每個客戶端加入到容器里 }} 3.任務(wù)實施客戶端關(guān)鍵代碼s=newSocket("",8888); //s為局部變量……dos=newDataOutputStream(s.getOutputStream());dis=newDataInputStream(s.getInputStream());
4.任務(wù)拓展
域名系統(tǒng)(DNS):
將特定IP地址映射至字符串,比如2域名為。
域名的優(yōu)點:
方便人的記憶,域名到IP地址的映射和轉(zhuǎn)換由域名服務(wù)器系統(tǒng)維護。InetAddress類:
封裝了IP地址和DNS,創(chuàng)建實例不是使用構(gòu)造方法,而是要使用其提供的
工廠方法:InetAddressgetLocalHost()和InetAddressgetByName(StringHostName)。4.任務(wù)拓展【例5-22】演示InetAddress類的用法。要求:
獲取并顯示了本機和新浪網(wǎng)的IP地址。運行此程序,要求電腦能夠聯(lián)通互聯(lián)網(wǎng),否則需要給新浪網(wǎng)那行代碼加上注釋,不然會出異常的。InetAddressadd=InetAddress.getLocalHost();System.out.println("本主機的地址是"+add);System.out.println(“新浪網(wǎng)的地址是”+add.getByName(“”));一、實訓(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)容里面會有圖紙預(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋁合金材料施工方案
- (三模)榆林市2025屆高三第三次模擬檢測生物試卷(含答案詳解)
- 數(shù)控加工工藝與編程技術(shù)基礎(chǔ) 教案 模塊一 任務(wù)4 數(shù)控加工機床夾具基礎(chǔ)
- 結(jié)合農(nóng)業(yè)植保技術(shù)的現(xiàn)代農(nóng)業(yè)病蟲害防治思路與具體辦法探討
- 醫(yī)療機構(gòu)水污染物排放的管理制度與組織架構(gòu)
- 石油化工靜電接地系統(tǒng)的組成與功能
- 綠色發(fā)展與可持續(xù)城鎮(zhèn)化策略
- 積極穩(wěn)妥推進碳達峰碳中和的策略及實施路徑
- 采購鐵皮保溫施工方案
- 2018年數(shù)學(xué)(北師大版選修2-2)練習(xí)第3章22最大值最小值問題活頁作業(yè)14
- 第三方單位考核管理辦法
- 造粒塔外壁清洗施工方案
- 鋼棧橋計算書(excel版)
- MTBE裂解工藝交流材料
- 中醫(yī)診斷學(xué)第七章第二節(jié)六經(jīng)辨證
- 租賃合同審批表
- 數(shù)據(jù)庫及其應(yīng)用-重點復(fù)習(xí)資料.代碼02120
- 巖石堅固性和穩(wěn)定性分級表
- 律師事務(wù)所函[]第號
- 物流經(jīng)典游戲啤酒游戲(完全操作版)
- 新形勢下如何做一名合格的鄉(xiāng)鎮(zhèn)干部之我見
評論
0/150
提交評論