版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課 程 設 計 報 告課程名稱:面向對象程序設計課程設計任課教師:設計題目:網絡聊天工具所學專業(yè):信息管理與信息系統班級學號:學生姓名:報告完成日期: 2012 年 01 月10日目 錄目 錄 1一、項目目標 2二、功能描述 31.服務器端功能 32.客戶端功能 3三、設計思路 4(一)總體設計 41服務器端設計 42客戶端設計 4(二)代碼思路 51定義服務端類cserver繼承frame類 52定義cclient類繼承frame類 5四、具體設計 7總 結 10一、項目目標實現基于c/s模式的聊天室程序。聊天室共分為服務器端和客戶端兩部分。二、功能描述1.服務器端功能(1)提供多線程的聊天
2、服務處理。(2)在服務器端屏幕上提示客戶端進入,顯示客戶端聊天內容。(3)當某客戶端輸入字符“quit”時斷開該客戶端的連接。2.客戶端功能(1)可以配置要連接服務器的ip地址和端口號。(2)配置用戶昵稱后連接。(3)可以向所有人發(fā)送消息。(4)顯示本聊天室中的該用戶登錄后的所有消息。(5)顯示在該用戶登錄之后登錄的用戶登錄信息。提供聊天服務處理提示客戶端進入斷開客戶端連接顯示客戶端聊天內容服務器端管理 圖 服務器端管理用例圖三、設計思路(一)總體設計1服務器端設計定義一個服務端類,實現服務器端功能。(1)定義內部類,此內部類采用多線程,實現多客戶端接入。(2)當初始化界面時,啟動服務器。(3
3、)當某客戶端輸入字符“quit”時斷開該客戶端的連接,關閉服務器窗口時關閉與客戶端的連接。(4)服務器接收客戶端信息,并把這些信息發(fā)送到連接服務器的客戶端。2客戶端設計定義一個客戶端類,實現客戶端功能。(1)定義三個內部類,以實現連接按鈕的監(jiān)聽、信息接收、對自己信息的監(jiān)聽。(2)定義輸入服務器的ip地址、端口號的控件和用戶昵稱,在連接時把這些信息傳給服務器。(3)發(fā)送消息時,通過對系統的監(jiān)聽顯示自己發(fā)送的消息,其他用戶發(fā)送的信息通過服務器轉發(fā)。編譯源程序運 行監(jiān) 聽啟動服務器客戶端接入顯 示 消 息發(fā) 送 信 息 退 出 系 統圖 c/s聊天室的活動圖(二)代碼思路1定義服務端類cserver
4、繼承frame類(1)定義兩個構造方法,一個構造方法實現客戶端不傳參數時服務器窗口標題為空,另外一個構造方法實現客戶端傳參數時服務器窗口標題為此參數值。都要執(zhí)行窗口的初始化操作。(2)init()方法即窗口初始化方法,實現服務端界面,在界面中定義一個文本區(qū)域,設定窗口關閉時系統退出,并啟動服務器。(3)boradcast(string str,socket socket)方法,即向所有在服務器中的客戶端廣播方法,有兩個參數,一個傳遞只顯示的字符串,另一個傳遞套接字。該方法要判斷發(fā)送信息的用戶是否是自己。(4)startserver()方法,啟動服務方法。等待客戶端的請求,接收到請求后,產生so
5、cket對象,交給多線程的聊天服務處理。(5)定義內部類service類 ,實現runnable接口。有兩個屬性套接字socket和用戶名name。定義兩個構造方法,一個沒有參數實現為空,另一個以套接字socket作參數,并獲取用戶名。run()方法,沒有參數。當用戶發(fā)送“quit”時,關閉客戶連接。用戶發(fā)送其他信息時廣播信息。(6)定義主方法,實例化cserver類。2定義cclient類繼承frame類(1)把界面組件定義為屬性,在init()方法中構建界面,并調用與服務器連接的方法。(2)connect()方法實現與服務器的連接。(3)recive()方法實現接收服務器發(fā)送的信息。(4)
6、sendname()方法實現向服務器發(fā)送用戶姓名。(5)定義內部類connbttnlistener,實現actionlistener。(6)定義內部類recive,實現線程。(7)定義內部類mylistener,實現actionlistener。(8)定義close()方法,實現關閉輸出流,關閉套接字。(9)定義主方法,實例化cclient類。cclient textarea : textareatextfield : textfieldnickname : textfieldaddress : textfieldport : textfieldsendbttn : buttonconnbtt
7、n : buttonpanel1 : panelpanel2 : panelsocket : socketprintstream : printstreamcclient()cclient(string)init()connet()recive()sendname()serversocket : socketname : stringservice(socket)service()run()cservertextarea : textareasocket : socketsocket1 : sockethashtable : hashtable cserver()cserver(string)
8、init()boradcast(string, socket)startserver()圖 自定義的類四具體設計文件中函數的功能如下:文件名方法成員變量cserver.javacserver()cserver(string)init()boradcast(string, socket)startserver()textarea : textareasocket : socketsocket1 : sockethashtable : hashtable 關鍵代碼public void boradcast(string str,socket self)enumeration enumeration
9、=hashtable.keys();system.out.println("本聊天室共有:"+hashtable.size()+"人");printstream printstream=null;textarea.append(str);while(enumeration.hasmoreelements()string s=(string) enumeration.nextelement();socket=(socket)hashtable.get(s);if(socket!=self) tryprintstream=new printstream(so
10、cket.getoutputstream();printstream.println(str);該代碼主要實現將客戶端發(fā)送的信息,轉發(fā)給接入服務器的其他客戶端。該代碼通過一個哈希表,返回一個enumeration的對象,該對象主要存儲的是客戶端的名稱及其與服務器之間的socket連接,在下面的程序中通過name關鍵字返回具體客戶端與服務器之間的socket連接,獲取每一個socket連接的輸出流,然后分別將某一個客戶端發(fā)送的信息寫入到輸出流中,轉發(fā)給其他的客戶端。文件名方法成員變量cclient.javacclient()cclient(string)init()connet()recive(
11、)sendname()panel1:panelpanel:panelbutton:buttontextfield1:textfieldtextfield2:textfieldname:textfieldlabel1:labeltextarea:textareaspanel:scrollpaneout:printwritersock:socketdefault_port:intprintstream:printstream關鍵代碼class mylistener implements actionlistenerpublic void actionperformed(actionevent arg0)tryprintstream printstream=new printstream(socket.getoutputstream();printstream.println(textfield.gettext();textarea.append("我說:"+textfield.gettext()+"n");textfield.settext("");catch(exception e)該代碼實現了一個事件監(jiān)聽的類,獲取了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球滑靴式分揀系統行業(yè)調研及趨勢分析報告
- 2025-2030全球民用航空機翼行業(yè)調研及趨勢分析報告
- 為他人貸款合同擔保
- 叉車購銷合同模板
- 2025物料購置合同管理操作規(guī)程
- 學校商鋪租賃合同范本
- 提高組織和協調能力的培訓
- 施工設計合同
- 商鋪租賃合同范本簡單
- 人才招聘中介服務合同模板
- 安全文明施工的管理要點
- 附屬醫(yī)院神經內科中長期發(fā)展規(guī)劃五年發(fā)展規(guī)劃
- 中醫(yī)中風病(腦梗死)診療方案
- GMP-基礎知識培訓
- 人教版小學六年級數學下冊(全冊)教案
- 人教版二年級語文上冊同音字歸類
- 高二數學下學期教學計劃
- 文學類作品閱讀練習-2023年中考語文考前專項練習(浙江紹興)(含解析)
- 第五章硅酸鹽分析
- 外科學總論-第十四章腫瘤
- 網絡反詐知識競賽參考題庫100題(含答案)
評論
0/150
提交評論