![完整版QQ模擬聊天系統(tǒng)試驗報告_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-5/1/5e8df33a-b489-4ecd-b2c4-aa830950ab6a/5e8df33a-b489-4ecd-b2c4-aa830950ab6a1.gif)
![完整版QQ模擬聊天系統(tǒng)試驗報告_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-5/1/5e8df33a-b489-4ecd-b2c4-aa830950ab6a/5e8df33a-b489-4ecd-b2c4-aa830950ab6a2.gif)
![完整版QQ模擬聊天系統(tǒng)試驗報告_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-5/1/5e8df33a-b489-4ecd-b2c4-aa830950ab6a/5e8df33a-b489-4ecd-b2c4-aa830950ab6a3.gif)
![完整版QQ模擬聊天系統(tǒng)試驗報告_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-5/1/5e8df33a-b489-4ecd-b2c4-aa830950ab6a/5e8df33a-b489-4ecd-b2c4-aa830950ab6a4.gif)
![完整版QQ模擬聊天系統(tǒng)試驗報告_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-5/1/5e8df33a-b489-4ecd-b2c4-aa830950ab6a/5e8df33a-b489-4ecd-b2c4-aa830950ab6a5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、C+網(wǎng)絡應用程序開發(fā)課程設計題目:QQ模擬聊天系統(tǒng)學院:軟件學院班級:1010級網(wǎng)絡工程3 3班指導教師:錢鴿姓名:謝昊天學號:12151340461215134046學年、學期:2012201320122013學年第一學期目錄1 1.引言31 .1需求分析31.2聊天室程序的開發(fā)背景31.3聊天室的設計目標42.總體設計42.2功能要求42.3系統(tǒng)主要功能和主要功能描述:53.詳細設計63.2設計流程圖63.3客戶端的實現(xiàn)73.4服務端的實現(xiàn)144.運行結果214.2客戶端214.3服務器端224.4客戶端登陸到服務器端224.5進行對話234.6退出服務器端與客戶端235.心得體會266
2、.參考文獻261.1.引言計算機網(wǎng)絡技術發(fā)展至今已經(jīng)大大超越了人們當初的預想,無論是人們?nèi)粘5墓ぷ鬟€是學習, 我們都越來越多的依靠到互聯(lián)網(wǎng)。 各種實時性的聊天娛樂軟件也同時誕生,而且為我們的即時通訊帶來了眾多的方便,比如說大家所熟知的騰訊 QQ、微軟的 MSN、移動的 Fetion 等,都是做的比較成功的實時聊天工具。隨著網(wǎng)絡的日益普及,各種聊天工具也層出不窮,但當我們學習了TCP/IP 協(xié)議與網(wǎng)絡編程這門課程之后,我們便會覺得,其實要實現(xiàn)簡單的網(wǎng)絡通訊其實并不難。接下來的課程設計就是針對一個簡單的網(wǎng)絡聊天程序,利用 MFC 為開發(fā)工具,實現(xiàn)基本的通訊功能。1.1需求分析:當前是數(shù)字信息時代,
3、網(wǎng)絡時代,任何一種編輯工具都不能忽視在網(wǎng)絡上的應用,并且隨著 Internet 的普及和寬帶技術的成熟,越來越多的用戶進入網(wǎng)絡世界中享用瀏覽新聞、查詢信息、發(fā)送郵件、在線觀看電影等服務,享受網(wǎng)絡帶來的便利和辦公的高效,與此同時一個新型的 Web 應用程序為網(wǎng)民之間提供了一個實時通信的功能和場所,這就是聊天室。在網(wǎng)絡早期就開始盛行,不論是 BBSIRC 都有類似網(wǎng)上聊天室的機制。聊天室為網(wǎng)友提供了實時性對話的渠道,是網(wǎng)絡上極為流行的一項服務。聊天室適用于網(wǎng)上會議或閑聊的一些場合。聊天室為網(wǎng)友提供了較好的交友環(huán)境,網(wǎng)友之間相互以文字交談,在形式上有點類似筆友的性質(zhì),卻大大節(jié)省了書信往返的時間,這也
4、是網(wǎng)上交友之所以如此熱門的原因。1.2聊天室程序的開發(fā)背景近年來,互連網(wǎng)發(fā)展日新月異,網(wǎng)絡使空間的距離不再成為人們溝通的障礙,世界各個角落的人們可以通過 Internet 收發(fā)郵件、實時聊天、獲取最為題,制作一個 C/S 聊天室程序,通過制作該程序還能更好的學習網(wǎng)絡 socket 編程的相關知識。1.3聊天室的設計目標本課題是建立聊天通信模型,設計一個聊天室軟件,包括服務器端和客戶端,主要功能為:服務器端功能:1、初始化 socket,創(chuàng)建服務器端。2、維護一個鏈表,保存所有用戶的 IP 地址、端口信息。3、接受用戶傳送來的聊天信息,然后向鏈表中的所用用戶轉發(fā)。4、接受用戶傳送來的連接判斷命令
5、,并向用戶發(fā)出響應命令。客戶端功能:客戶端界面上的兩個文本框,一個用于顯示接受的聊天信息,一個用來接受用戶輸入的聊天信息。當按下“發(fā)送”按鈕時將信息發(fā)送給服務器。通過本課題的實訓設計,可以比較深入的了解和掌握 WINSOC 腔件基本屬性、方法和事件,理解網(wǎng)絡聊天通信的概念,輸控制協(xié)議(TCP 進行數(shù)據(jù)交流,初步掌握網(wǎng)絡聊天通信程序的設計方法。并能鞏固和擴展大學期間的學習內(nèi)容,進行項目的設計開發(fā)訓練,更好的適應社會的需求。2.總體設計2.2功能要求1、支持多個客戶端的連接,在服務器和多個客戶端之間進行數(shù)據(jù)傳輸;2、接收客戶端發(fā)送的消息,并顯示在一個列表框中;-4-新的資訊。因此本次畢業(yè)設計以“面
6、向連接的Winsock 網(wǎng)絡會話程序開發(fā)”3、在用戶連接上后有提示,顯示出連接的用戶名字;4、發(fā)送信息時可以顯示聊天的所有記錄;2.2 系統(tǒng)主要功能和主要功能描述:服務器端聊天程序必須能夠做 3 3 件事情:1、服務器聊天程序要在待定的端口上等待來自聊天客戶的連接請求,并且需要維護一個客戶連接表,以記錄所有成功的連接。2、服務器聊天程序要及時接受從各個聊天客戶發(fā)送過來的信息,然后把這些信息轉發(fā)到一個或多個客戶連接。對于公共聊天室,服務器將把接受到的信息向除源端外的所有客戶發(fā)送過去。3、服務器還要監(jiān)控這些連接的狀態(tài),在客戶主動離開或發(fā)生故障時從列表中刪除相應的表項,并及時更新連接表。這些要求可以
7、通過 CSocket 類提供的功能實現(xiàn)。從 CSocket 派生出兩個類CListenSocket 和 CClientSocket,它們分別用來偵聽客戶的連接請求和建立與客戶的連接。服務器只需要一個偵聽套接字 CListenSocket,然后根據(jù)客戶的連接請求動態(tài)創(chuàng)建客戶套接字 CClientSocket??蛻籼捉幼值臄?shù)量是不可預知的,因此需要一個列表來記錄。MFC 勺 CPtrList 類就能實現(xiàn)這種功能。客戶端聊天程序需要完成以下幾個功能:1、客戶端聊天程序要負責建立和維護與服務器的連接,通過獲取用戶的設置嘗試與服務器的連接,并且隨時檢測連接的狀態(tài)。2、客戶端聊天程序要把用戶輸入的信息及時
8、發(fā)送到聊天服務器。一般情況下,當用戶輸入一行信息并且按下回車鍵后聊天程序就要把這一行信息發(fā)送出去,才能及時地滿足用戶的交互需求。3、要隨時準備好接受來自服務器的信息,隨時把接受到的信息顯示出來,讓用戶及時看到對方的響應。4、在用戶退出聊天過程是要關閉與服務器的連接。比較好的做法是提前通知服務器或者直接給服務器發(fā)送一條退出通知,使得服務器能夠及時掌握客戶端的連接狀態(tài),把對方客戶的退出信息及時發(fā)送到對等實體上??蛻舳肆奶斐绦蛐枰褂靡粋€通過 CSocket 類派生出來的 CChatSocket 類來實現(xiàn)。該套接字用來發(fā)送一個與服務器的連接請求和維持與服務器的連接,發(fā)送和接收聊天信息,完成上述各項功
9、能。3.3.詳細設計3.1 設計流程圖3.2 客戶端的實現(xiàn)(1)首先啟動 VisualC+6.0,利用 MFCAppWizardEXE 建立一個新的 MFC 工程, 工程名為:QQ莫擬聊天系統(tǒng), 在MFCAppWizardStep1的時候選擇Dialogbased即基于對話框, 在Step4時勾選 WindowsSockets 選項(如圖),其他默認值下一步。CListenSocketCClientSocketMFC的設置(2)客戶端主要分為三個窗口,第一個是連接窗口,需要輸入連接到服務器的相關設置信息;第二個是聊天信息顯示窗口,該窗口顯示登錄服務器以來發(fā)送和接收到的消息;第三個是消息編輯發(fā)送
10、窗口,需要輸入你要發(fā)送的信息內(nèi)容并發(fā)送。新建一個對話框,并添加各種控件,如下圖:EQQEQQ模擬般系統(tǒng)-客戶標制作:謝昊天字號:1215112151弘046046丁回I IS3S3服務器工巴F F 端口號隔宿羲的名字:的詛連接服務器113編揖發(fā)送回車)聊天窗口布局表3.1控件類型及各自ID標題控件類型控件ID我的名字:StaticIDC_STATIC服務器IP:StaticIDC_STATIC端口號:StaticIDC_STATIC連接服務器ButtonIDC_connet發(fā)送(回車)ButtonIDC_send編輯框1(服務器IP)EditIDC_EDIT1編輯框2(端口號)EditIDC_
11、EDIT2編輯框3EditIDC_EDIT3編輯框4EditIDC_EDIT4編輯框5(我的名字)EditIDC_EDIT5-9-其中編輯框 1:服務器 IP;編輯框 2:端口號;編輯框 3:消息顯示區(qū);編輯框 4:消息編輯區(qū);編輯框 5:我的名字。(3)服務器 IP 編輯框控件 IDC_EDIT1 對應的成員變量為 OnChangeEditl端口號編輯框控件 IDC_EDIT2 對應的成員變量為 OnChangeEdit2消息顯示區(qū)編輯框控件 IDC_EDIT3 寸應的成員變量為 OnChangeEdit3消息編輯區(qū)編輯框控件 IDC_EDIT4 對應的成員變量為OnChangeEdit4我
12、的名字編輯框控件 IDC_EDIT5 對應的成員變量為 OnChangeEdit5(4)單擊連接服務器按鈕時的處理網(wǎng)絡連接的函數(shù)。代碼設置如下:voidCTcpclientDlg:Onconnet()/TODO:Addyourcontrolnotificationhandlercodehereif(clconect)clconect.Close();CStringipstr,portstr;/創(chuàng)建字符串ipstr(保存IP)portstr(保存端口),intport;GetDlgItemText(IDC_EDIT1,ipstr);GetDlgItemText(IDC_EDIT2,portstr
13、);GetDlgItemText(IDC_EDIT5,clientname);portstr.TrimLeft();portstr.TrimRight();port=atoi(portstr);if(port0&portEnableWindow(false);cw=GetDlgItem(IDC_EDIT2);cw-EnableWindow(false);cw=GetDlgItem(IDC_connet);cw-EnableWindow(false);cw=GetDlgItem(IDC_EDIT5);cw-EnableWindow(false);SetDlgItemText(IDC_EDIT3,
14、已設名字+clientname+rn連接服務器-10-成功)設置對話框的文本和標題CStringenterinfo=clientname+進入期/天室;intlen=enterinfo.GetLength();clconect.Send(enterinfo,len);elseclconect.Close();MessageBox(連接失敗,請檢查IP與端口是否與服務器一致!或者服務器沒打開,連接錯誤,MB_ICONERROR);elseMessageBox(端口或IP輸入有誤,請重新輸入);設計步驟:創(chuàng)建字符串 ipstr(保存 IP),portstr(保存端口),clientname(用戶名
15、),整型 port(端口號)。利用 GetDlgItemText 將各個編輯框中的信息賦給相應的變量。監(jiān)視端口號和 IP 格式并設置相應錯誤提示(如下圖)連接錯誤提示端口或IP錯誤提小-11-創(chuàng)建套接字 clconect,設置成功創(chuàng)建后相關控件為只讀(避免誤操作)設置建立連接后相應提示。(5)接下來就是對話框中的發(fā)送(回車)按鈕的函數(shù),代碼設置如下:voidCTcpclientDlg:Onsend()(CStringstr;GetDlgItemText(IDC_EDIT4,str);str=clientname+”:+str;intlen=str.GetLength();if(clconect
16、.Send(str,len)1)SetDlgItemText(IDC_EDIT4,);一定義字符串 str 用于保存輸入的消息,調(diào)整格式后使用 CSocket 的操作函數(shù) send 將消息發(fā)送到服務器。(6)要顯示客戶端接收到來自服務器其他用戶的信息,代碼設置如下:voidCTcpclientDlg:onrev()(CStringstr,str1;charss256;for(intj=0;jLineScroll(ce-GetLineCount()-1);設計步驟:創(chuàng)建字符串 str、str1,字符數(shù)組 ss。接受來自服務器套接字的信息數(shù)據(jù)保存到 ss 中,調(diào)整格式后將其打印到消息區(qū)。-12-(
17、7)當與服務器斷開連接時彈出警告,如下圖:圖3.15失去連接提示代碼設置如下:voidCTcpclientDlg:oncl()(MessageBox(失去連接或者找不到服務器);CWnd*cw=GetDlgItem(IDC_EDIT1);cw-EnableWindow(true);cw=GetDlgItem(IDC_EDIT2);cw-EnableWindow(true);cw=GetDlgItem(IDC_connet);cw-EnableWindow(true);cw=GetDlgItem(IDC_EDIT5);cw-EnableWindow(true);當失去與服務器的連接后,重新將連接
18、服務器設置編輯框啟用等待下次連接。(8)在退出程序時的提示,如下圖:圖3.16退出確認代碼設置如下:voidCTcpclientDlg:OnClose()-13-(intconfirm=MessageBox(確定退出嗎”,請確定,MB_YESNO|MB_ICONQUESTION);if(confirm=IDYES)CStringenterinfo=clientname+”退出了聊天室;intlen=enterinfo.GetLength();clconect.Send(enterinfo,len);CDialog:OnClose();設計步驟:當退出程序時,彈出確認對話框。當選擇“是”時,將用
19、戶退出信息發(fā)送至服務器并關閉對話框。3.3服務端的實現(xiàn)(1)和客戶端一樣,仍然建立一個基于對話框的工程,工程名為tcpserver,同樣,注意一定不要忘記在 Step4 時勾選 WindowsSockets 選項。其他默認下一步。(2)客戶端主要分為三個窗口,第一個是服務器信息設置窗口,需要輸入服務器的相關設置信息;第二個是聊天信息顯示窗口,該窗口顯示啟動服務器以來發(fā)送和接收到的消息;第三個是消息編輯發(fā)送窗口,需要輸入你要發(fā)送的信息內(nèi)容并發(fā)送。新建一個對話框,并添加各種控件如下圖:-14-圖3.21表 3.2控件類型及各自ID標題控件類型控件 ID服務器名稱:StaticIDC_STATIC端
20、口:StaticIDC_STATIC啟動服務器ButtonIDC_listen發(fā)送(回車)ButtonIDC_send編輯框 1EditIDC_EDIT1編輯框 2EditIDC_EDIT2編輯框 3EditIDC_EDIT3編輯框 4EditIDC_EDIT4-15-其中編輯框 1:消息顯示區(qū);編輯框 2:消息編輯區(qū);編輯框 3:服務器名稱;編輯框 4:端口號。(3)消息顯示區(qū)編輯框控件 IDC_EDIT1 對應的成員變量為 OnChangeEditl消息編輯區(qū)編輯框控件IDC_EDIT2寸應的成員變量為OnChangeEdit2服務器名稱編輯框控件IDC_EDIT3寸應的成員變量為OnCh
21、angeEdit3端口號編輯框控件IDC_EDIT4 對應的成員變量為 OnChangeEdit4(4)單擊啟動服務器按鈕時的處理網(wǎng)絡連接的函數(shù)。代碼設置如下:voidCTcpseverDlg二Onlisten()/Beep(2000,100);CStringipstr,portstr;intport;GetDlgItemText(IDC_EDIT3,ipstr);severname=ipstr;GetDlgItemText(IDC_EDIT4,portstr);portstr.TrimLeft();portstr.TrimRight();port=atoi(portstr);if(port0
22、&portEnableWindow(false);cw=GetDlgItem(IDC_EDIT4);-16-cw-EnableWindow(false);cw=GetDlgItem(IDC_listen);cw-EnableWindow(false);cw=GetDlgItem(IDC_EDIT1);cw-SetWindowText(服務器名:+severname+rn等待用戶連接,監(jiān)聽端口:+portstr+);elseMessageBox(設置監(jiān)聽端口失敗,端口可能被其它程序占用);cslisten.Close();elseMessageBox(端口輸入有誤,請重新輸入);設計步驟:創(chuàng)建字
23、符串 ipstr(保存 IP),portstr(保存端口),整型 port(端口號)利用 GetDlgItemText 將各個編輯框中的信息賦給相應的變量監(jiān)視端口號和 IP 格式并設置相應錯誤提示(如下圖)圖3.22設置建立連接后相應提示-17-圖3.23(5)接下來就是對話框中的發(fā)送(回車)按鈕的函數(shù),代碼設置如下:voidCTcpseverDlg:Onsend()(CStringstr,history;GetDlgItemText(IDC_EDIT1,history);GetDlgItemText(IDC_EDIT2,str);str=severname+”:+str;intlen=str
24、.GetLength();intsended;for(inti=1;iLineScroll(ce-GetLineCount()-1);定義字符串 str 用于保存輸入的消息,調(diào)整格式后使用 CSocket 的操作函數(shù) send 將消息發(fā)送到各個客戶端。(6)要顯示服務器接收到來自客戶端其他用戶的信息,代碼設置如下:voidCTcpseverDlg:onrev(intmynum)CStringstr,str1;inti;charss100;for(intj=0;j100;j+)ssj=0;csrevmynum.Receive(ss,100);str.Format(%s,ss);-18-for(i
25、=1;iLineScroll(ce-GetLineCount()-1);設計步驟:創(chuàng)建字符串 str、str1,字符數(shù)組 ss。接受來自服務器套接字的信息數(shù)據(jù)保存到 ss 中,調(diào)整格式后將其打印到消息區(qū)。(7)當有新用戶進入時,顯示“XXX 進入”。代碼如下:voidCTcpseverDlg:onac()CStringstr1,str;GetDlgItemText(IDC_EDIT1,str1);CStringstr2=rn進入”;str=str1+str2;SetDlgItemText(IDC_EDIT1,str);cslisten.Accept(csrev+csnum);csrevcsnum.setp(this,csnum);-19-(8)在退出程序時的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年春八年級歷史下冊 第11課 城鄉(xiāng)人民生存狀態(tài)的滄桑巨變說課稿1(pdf) 川教版
- Unit 2 Understanding each other Project 說課稿-2023-2024學年高中英語牛津譯林版(2020)選擇性必修第四冊
- Unit 6 Meet my family Part B Let's talk Let's learn大單元整體說課稿表格式-2024-2025學年人教PEP版英語四年級上冊
- 2024年秋七年級生物上冊 3.5.2 綠色植物的呼吸作用說課稿 (新版)新人教版001
- 葡萄園立柱施工方案
- 2023三年級數(shù)學下冊 三 美麗的街景-兩位數(shù)乘兩位數(shù)信息窗1 美麗的街燈第2課時說課稿 青島版六三制
- 預制水泥臨時圍墻施工方案
- 臨時合同范例復制
- 西安電動推拉雨棚施工方案
- 2024秋一年級語文上冊 漢語拼音 11 ie üe er說課稿 新人教版
- 2024美團簡化版商家合作合同標準文本一
- 2025年貴州黔源電力股份有限公司招聘筆試參考題庫含答案解析
- 《休閑食品加工技術》 課件 1 休閑食品生產(chǎn)與職業(yè)生活
- 春季開學安全第一課
- 2025年新生兒黃疸診斷與治療研究進展
- 廣東大灣區(qū)2024-2025學年度高一上學期期末統(tǒng)一測試英語試題(無答案)
- 2025年四川中煙工業(yè)限責任公司招聘110人高頻重點提升(共500題)附帶答案詳解
- 課題申報書:數(shù)智賦能高職院校思想政治理論課“金課”實踐路徑研究
- 公司安全生產(chǎn)事故隱患內(nèi)部報告獎勵工作制度
- H3CNE認證考試題庫官網(wǎng)2022版
- 感統(tǒng)訓練培訓手冊(適合3-13歲兒童)
評論
0/150
提交評論