版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
本科畢業(yè)設計(論文)題目基于局域網(wǎng)的即時通訊聊天室 部系地方生部 專業(yè)電子信息工程 指導教員朱四華基于局域網(wǎng)的即時通訊聊天系統(tǒng)的設計Ⅱ隨著計算機科學和Internet的飛速發(fā)展,網(wǎng)上聊天已成為人們相互交流的一本論文提出一個運行于VC平臺上的局域網(wǎng)聊天軟件的解決方案。該聊天軟件包類似QQ等軟件泄露內(nèi)部信息,但是該軟件只實現(xiàn)了聊天的基本功能,還有很多不足關鍵字:局域網(wǎng)、即時通信、套接字、異步模式Alongwiththehigh-speeddevelopmentofthecomputerscienceandfseriesdocumentsthepreservationoftheobjectdata. I I 11.1系統(tǒng)現(xiàn)狀 21.2系統(tǒng)內(nèi)容與目標 1.3系統(tǒng)綜述 42.1開發(fā)環(huán)境 42.2關鍵技術 42.2.1.VisualC++和面向對象程序設計 4 5 5 6 72.2.6Client/Server結構(客戶機/服務器模式) 9 3.1系統(tǒng)分析 13.2系統(tǒng)設計 3.2.4功能設計 4.1服務器端設計實現(xiàn) 4.1.1服務器端靜態(tài)類圖 4.1.2服務器主要類介紹 4.1.3服務器端主要過程介紹 204.2客戶端設計實現(xiàn) 264.2.1客戶端靜態(tài)類圖 264.2.2客戶端主要類介紹 264.2.3客戶端主要過程介紹 28 34.3.2軟件測試的目標 34.3.2軟件測試的方法 3 34 35 37 38望員工通過內(nèi)部局域網(wǎng)進行溝通與交流,避免企業(yè)內(nèi)部機密通過Internet泄露到外2本系統(tǒng)采用基于Socket的局域網(wǎng)通信工具的設計與實現(xiàn)的方法。基于Socket基于局域網(wǎng)的即時通信工具,實際上是互聯(lián)網(wǎng)即時通信而QQ也具有一個相當方便的屏幕截圖功能,另外就是,所有上述本課題主要研究的是局域網(wǎng)聊天軟件,此聊天軟件分為服務器程序和客戶端程主要研究開發(fā)內(nèi)容是:熟悉C++和VC的操作,搭配系統(tǒng)開發(fā)平臺,探索在此開聊天軟件的實際開發(fā)。3現(xiàn)在,多渠道的信息源、網(wǎng)絡化的數(shù)據(jù)分布、快捷醫(yī)用的交互操作、智能化的分析決策等特點越來越成為衡量有兩聊天軟件的關鍵,因此,本人開發(fā)一個局域網(wǎng)聊天軟件,該聊天軟件是基于C++語言運行于VC平臺上,利用的技術主要是Socket通信,使用配置文件作為數(shù)據(jù)管理。為實現(xiàn)和方便客戶端間通信,在客戶端進行了人性化的界面設計,用戶可以注冊號碼,登陸界面,具有發(fā)送離線消息功能。第1章對本次課題的背景及意義、課題現(xiàn)狀、課題內(nèi)容與目標進行了深入的闡述。第2章介紹了系統(tǒng)的開發(fā)環(huán)境和關鍵技術,例如Socket編程技術,非阻塞開發(fā)模式等等。第3章是系統(tǒng)分析與設計。將對系統(tǒng)進行需求分析,對組成系統(tǒng)的功能模塊進行劃分,對每個模塊將要實現(xiàn)的功能進行闡述和說明。對系統(tǒng)的結構進行設計,設計共享數(shù)據(jù)結構。第4章是系統(tǒng)實現(xiàn),分別介紹了服務器端和客戶端每個功能的執(zhí)行過程,畫出主要模塊的流程圖。第5章介紹系統(tǒng)測試。最后,對本設計進行歸納總結,全面闡述本次設計中的體會。42.1開發(fā)環(huán)境2.2關鍵技術它兼有高級,和低級語言的雙重性,功能強大,靈活,執(zhí)行效率高,幾乎可說VC在Windows平臺無所不能。從20世紀70年代第一次提出面向對象的概念開始,到現(xiàn)在界直接影射到對象空間,從而為系統(tǒng)的設計和是C語言的超集。更重要的是它能支持面向對象、可視化的開發(fā)風格。因此集成開發(fā)工具,它提供了軟件代碼自動生成和可視化的資源編輯功能。Visual具有的優(yōu)點:提供了面向對象的應用程序框架MFC(MicrosoftFoundationClass),5過MFC類是微軟為VC++專配的..器。所有的WindowsSockets實現(xiàn)都支持流套接口和數(shù)據(jù)報套接口。應用程序通訊協(xié)議功能和操作系統(tǒng)調用實現(xiàn)實際的通訊工作。它們之間的關系如圖2.1所示:6應用程序1應用程序1應用程序2率率2.2.4WSAAsyncSelect模型開發(fā)WSAAsyncSelect()調用允許應用程序程序注冊一個或多個感興趣的網(wǎng)絡事件。這一API調用用來取代探尋網(wǎng)絡I/0調用。在select()或非阻塞I/0例程(例如send()和recv())已經(jīng)被調用或將要被調用的情況下都可以使用WSAAsyncSelect()調用。在這種情況下,在聲明感興趣的網(wǎng)絡事件時,你必須提供一個通知時使用的窗口句柄。那么在你聲明的感興趣的網(wǎng)絡事件發(fā)生時,對應的窗口將收到一個基于消息的通知。其過程如圖2.2所示。7線程繼續(xù)運行返回消息圖2.2WSAAsyncSelect模型IP層接收由更低層(網(wǎng)絡接口層例如以太網(wǎng)設備驅動程序)發(fā)來的數(shù)據(jù)包,并據(jù)包是按順序發(fā)送的或者沒有被破壞。IP數(shù)據(jù)包中含有發(fā)送它的主機的地址(源地址)和接收它的主機的地址(目的地址)。如果IP數(shù)據(jù)包中有已經(jīng)封好的TCP數(shù)據(jù)包,那么IP將把它們向‘上'傳送到TCP和UDP服務通常有一個客戶/服務器的關系。兩個系統(tǒng)間的多重連接是這樣相互確認并協(xié)調一致的,TCP或UDP連接唯一地使用每個信息中的如下四項進行確認:8源IP地址發(fā)送包的IP地址。目的IP地址接收包的IP地址。源端口源系統(tǒng)上的連接的端口。目的端口目的系統(tǒng)上的連接的端口。應一個16比特的數(shù)。服務進程通常使用一個固定的端口,例如,SMTP使用25。這些服務器準備好接收連接sendO/recvQ在套接字上寫/讀數(shù)據(jù),直到數(shù)據(jù)交換完成2.3面向連接的(TCP)連接過程92.2.6Client/Server結構(客戶機/服務器模式)Client/Server結構(C/S結構)是大家熟知的客戶機和服務器結構。通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務合理分配到Client端和Server端來實現(xiàn),降低了系統(tǒng)的通訊開銷。目前大多數(shù)應用軟件系統(tǒng)都是Client/Server形式的兩層內(nèi)使用。聊天交流是目前互聯(lián)網(wǎng)提供的主要內(nèi)容。聊天系統(tǒng)有多種實現(xiàn)方式,類似ICQ系統(tǒng)需要登陸統(tǒng)一的聊天服務器。在基于Socket的聊天系統(tǒng)中,主要有兩種角色:在基于Socket的聊天系統(tǒng),客戶端和服務器必須保持隨時隨地的連接。這有別議,然后服務器響應處理這個客戶端的響應,再返回處理結果;請求(Request)和響應(Response)是一種一對一的前后因果關系。而在基于Socket的聊天系統(tǒng)中,局域網(wǎng)聊天系統(tǒng)使該系統(tǒng)的用戶能夠通過客戶端登入到該系統(tǒng),然后直接與系統(tǒng)交互。首先,需啟動服務器,進行服務器的配置,進行正確的服務器配置和數(shù)(1)配置服務器,設置IP及端;(2)開啟服務器;(3)對離線用戶進行刪除管理;(5)用戶與系統(tǒng)交互,進行文字傳送;(6)用戶好友登陸后,自動刷新列表;(7)傳送文字,當好友不在線時,發(fā)送離線消息;(3)更新成員列表,當其他成員加入或者偶成員被刪除時,客戶端及時更新(5)當用戶上線時,接受其他用戶的離線消息。(6)保存聊天記錄。(2)通知客戶端更新成員狀態(tài)。關系圖如圖3.1所示:ClientClient發(fā)送消息3.2.1設計原則考慮到系統(tǒng)的可重用性和伸縮性,需要將本系統(tǒng)的網(wǎng)絡通信底層和應用系統(tǒng)分離開。這樣,基于可重用的網(wǎng)絡通信層,可以實現(xiàn)其他各種實時性較高的應用系統(tǒng)。本系統(tǒng)在架構設計上將分4個層次,如圖3.2所示。圖3.2架構層次本系統(tǒng)最底層是Socket通信層,將負責客戶端和服務器之間快速的數(shù)據(jù)交換,它通過接口層和最上面應用層保持實時數(shù)據(jù)聯(lián)系。用戶從客戶端進入到本系統(tǒng)前,將實現(xiàn)統(tǒng)一的用戶登錄驗證機制。Socket底層設計分兩大部分:協(xié)議設計和連接處理設計:協(xié)議設計和連接處理設計;CSocket層的目的是提供底層和應用蹭一個中介媒體的作用,但是不能設計得太復雜,以免延誤數(shù)據(jù)傳送時間。3.2.3工作流程只有充分地了解了聊天程序的工作流程,才能對整個系統(tǒng)的理解更加深刻,聊天程序的工作流程如圖3.5所示。3.2.4功能設計局域網(wǎng)聊天系統(tǒng)以局域網(wǎng)內(nèi)的用戶為應用對象,經(jīng)過各方面需求分析,該系統(tǒng)主要由服務器端和客戶端兩部分構成,各功能模塊如圖3-6所示。離離離字登管服服服服線信息線信息傳送務器務器務器務器置送接配開理止發(fā)停文關收陸用戶啟閉3.2.5共享數(shù)據(jù)類設計A.用戶設計:1.用戶狀態(tài)設計客戶端與服務器端都擁有成員列表。該程序將成員列表設計為三種狀態(tài)服務器根據(jù)該用戶列表狀態(tài)發(fā)送成員列表。在線狀態(tài):用戶在線,當兩個用戶都在線時,可以相互發(fā)送和接受成員列表。離線狀態(tài):當用戶離線時,不能發(fā)送和接受消息。在線用戶之間可以直接發(fā)送消息;對離線離線用戶需要服務器轉發(fā)。轉發(fā)關系如圖3.7所示。B.用戶類設計在程序中聲明CUserInfo信息類。在該類中聲明USERSTATUE枚舉類型,描述用戶狀態(tài)?!馤OGIN:登陸狀態(tài)●UNKNOWN:未知狀態(tài),初始化狀態(tài)。成員函數(shù)如表3.1CUserInfo成員函數(shù),類成員變量如表3-2所示。無無名稱密碼狀態(tài)IP地址時間B.數(shù)據(jù)包類設計聲明PACKETTYPE枚舉類型。●SERVERMSG:服務器發(fā)送的消息無構造函數(shù)無析夠函數(shù)包類型用戶信息消息用戶鏈表離線用戶信息日期和時間4.1服務器端設計實現(xiàn)4.1.1服務器端靜態(tài)類圖4△聯(lián)合4.1.2服務器主要類介紹●CServerDlg類:創(chuàng)建服務器主窗口,管理用戶信息鏈表,管理在線用戶鏈表,管理離線用戶鏈表,讀取保存用戶信息,讀取保存離線消息等。值無構造函數(shù)無析構函數(shù)啟動服務ProcessPendingRead(C接收數(shù)據(jù)接受客戶端連接請求ReleaseChatter(CCli離線時刪除用戶DeleteChatter(CClient用戶登陸密碼錯誤時刪除用戶刪除所有在線用戶定義鏈表初始化用戶鏈表保存用戶信息讀取用戶消息發(fā)送用戶復制用戶DeleteTempUserList(CObLis刪除臨時更新用戶TransmitMsg(constCChatPacketCClientSocket*pClie轉發(fā)離線消息UpdateServerListCtl更新服務控件消息響應函數(shù)刪除用戶消息響應函數(shù)保存用戶信息保存離線消息●CListenSocket類:派生于MFC的CSocket類,用于接受客戶端的連接請求,無構造函數(shù)無析構函數(shù)接受連接請求●CClientSocket類:派生與MFC的CSocket類,用于接收客戶端和向其發(fā)送數(shù)無構造函數(shù)無析構函數(shù)發(fā)送用戶列表發(fā)送消息保存用戶地址保存用戶狀態(tài)信息獲取用戶信息接收數(shù)據(jù)關閉套接字●CServerAddressDlg:用與設置服務器地址和斷口。●CServerApp:用于生成唯一實例。4.1.3服務器端主要過程介紹啟動服務器:啟動服務器的過程就是創(chuàng)建套接字并開始監(jiān)聽客戶端連接的過程。執(zhí)行過程:CSocket::Cretate------→-CAsyncSocket--------------→CAsyncSocket::Socket(-------→CAsyncSockeCAsyncSocket::AtachHandle()--→CAsyncSocketMFC的底部函數(shù)在AttachHandle()中完成,流程圖4.2所示:獲取線程模塊獲取線程模塊變量接字嗎不是是有效套接字將套接字和對應實例指針為為空嗎鍵值對加入無效套接字集合空創(chuàng)建窗口窗口句柄賦值給線程模的將套接字和對應的實例指針作為鍵值對加入套接字集合是有效套服務器登陸如界面如圖4-3所示:×●列表試圖控件初始化●用戶列表初始化●讀取離線消息;離線消息包括:發(fā)送消息的用戶,接收消息的用戶,接收和發(fā)送消息的時間接受客戶端請求:FD_READ網(wǎng)絡事件發(fā)生時,CClienSocket::OnReceive()被調用.在該函數(shù)中與CSocke是立是否是處理數(shù)據(jù):●保存離線消息●保存用戶信息●更新用戶列表更新用戶列表的過程如圖4.5:空空中將該用戶從表中刪除息圖4.5更新用戶列表的過程刪除用戶:端口時間圖4.6刪除用戶端口時間不能冊除在線用戶!圖4.7禁止刪除用戶用戶離線:4.2.1客戶端靜態(tài)類圖-結束8*-結束12<<聯(lián)合>><<聯(lián)合>>PACKETTYPE圖4.8靜態(tài)類圖4.2.2客戶端主要類介紹●CClientDlg類:創(chuàng)建客戶端主窗口,創(chuàng)建聊天窗口,接收離線消息,發(fā)送離線消息和保存聊天記錄等。無構造函數(shù)無析夠函數(shù)連接服務器監(jiān)聽發(fā)送數(shù)據(jù)據(jù)更新用戶列表顯示離線消息創(chuàng)建用戶鏈表創(chuàng)建聊天窗口保存聊天記錄雙擊列表視圖控件的消息響該類有三個構造函數(shù)用于創(chuàng)建3種不同情況下的窗口:函數(shù)名稱功能無被動聊天窗口無在線/離線窗口無顯示離線聊天窗口無析構函數(shù)PreTranslateMessage(MS處理鍵盤消息創(chuàng)建套接字接收數(shù)據(jù)DisplayRecvMessage(CChat顯示消息DisplayOfflineMessage(CChat顯示接收到的離線消息發(fā)送消息設置對方信息設置用戶信息返回CChatSocket指針DisPlaySentMessage(CChat顯示發(fā)送的離線消息消息響應函數(shù)顯示發(fā)送的在線消息重寫了OnAccept()函數(shù)?!馛ChatSOcket類:派生與CSocket類●CClientLoginDlg4.2.3客戶端主要過程介紹確定端口是是否是否繼續(xù)連接服務器創(chuàng)建CChatSocket對象創(chuàng)建CSocketFile對象創(chuàng)建讀入文檔對象登陸對話框是否取消登陸否成功連接服務器?是獲取本機套接字地址是保存用戶信息請求用戶鏈表否退出創(chuàng)建聊天窗口如圖4.10所示:是用戶自身?在用戶鏈表中找到該用戶用戶在線?在線發(fā)送連接請求顯示聊天窗口保存聊天記錄發(fā)送離線消息保存聊天記錄退出●按情況CChatDlg類構造函數(shù)●發(fā)送離線消息●保存聊天記錄myChat(2009-5-1612:23:myChat(2009-5-1612:24圖4.11在線聊天myChat(2009-5-1612:26:myChat(2009-5-1612:26:THEREISAMEETINGTOMORROWAFTERNOON2:00圖4-12發(fā)送離線消息zzTHEREISAMEETINGTOMORROWA圖4.13接收離線消息4.3系統(tǒng)測試4.3.2軟件測試的目標(1).測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行的程序的過程;(2).好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試方案;4.3.2軟件測試的方法軟件的測試分為兩種:黑盒測試和白盒測試。黑盒測試:序外部結構,不考慮內(nèi)部邏輯結構,主要針對軟件界白盒測試:1、對程序模塊的所有獨立的執(zhí)行路徑至少測試一遍。2、對所有的邏輯判定,取“真”與取“假”的兩種情況都能至少測一遍。3、在循環(huán)的邊界和運行的界限內(nèi)執(zhí)行循環(huán)體。4、測試內(nèi)部數(shù)據(jù)結構的有效性,等等。4.3.3測試用例黑盒測試:主要是同學幫助一起測試系統(tǒng)的功能,看看主要功能是否能得以實現(xiàn)。白盒測試:主要是在編寫代碼的過程中對各個類進行測試,檢查各個類的功能是否實現(xiàn),最后是對整個系統(tǒng)的測試,進一步檢查各個類的功能。經(jīng)過以上測試,系統(tǒng)基本完成所需功能。表格4.3測試用例用例目的測試用戶登錄功能是否正常前提條件客戶端程序和服務器端程序處于運行狀態(tài)輸入/動作期望的輸出/相應實際情況示例1:輸入正確的用戶名、密碼、服務器IP和端口號與期望輸出相同示例2:不輸入用戶名密碼、輸入服務器IP和端口號提示用戶“用戶名不能為空!”或“密碼不能為空!”與期望輸出相同示例3:輸入正確的用誤服務器IP和端口號與期望輸出相同示例4:輸入錯誤的用戶名或密碼,輸入正確服務器IP和端口號與期望輸出相同經(jīng)過3個月緊張的畢業(yè)設計,局域網(wǎng)聊天軟件已基本完成,系統(tǒng)基本功能已經(jīng)實現(xiàn),測試運行也完全正常。該系統(tǒng)完成了服務器端的配置與開啟,客戶端用戶的注冊、登陸、文字傳送、發(fā)送離線消息的功能。該系統(tǒng)操作簡便、易于使用。在畢業(yè)設計的初期階段,我主要學習了與本課題相關的理論知識,包括:VC++的設置與開發(fā),MFC下的軟件開發(fā)過程等相關技術,socket編程技術和多線程開發(fā)技術,并完成客戶端和服務器端文字信息傳遞實驗。在查閱大量資料逐漸了解系統(tǒng)需求后,我編寫了系統(tǒng)的需求分析規(guī)格說明書和系統(tǒng)概要說明書。接著便進入了系統(tǒng)詳細設計和編碼階段,在這個階段,由于自己動手經(jīng)驗不足和對開發(fā)工具的陌生,系統(tǒng)遇到了很多大大小小的問題,比如如何向注冊表中寫入連接字符傳,如何將所有留言狀態(tài)置為已讀,如何利用多線程、非堵塞I/0技術提高系統(tǒng)性能,在一次次克服困難的過程中,我得到了極大的鍛煉,基本上掌握了一些的編程技巧,同時也獲得了許多寶貴的軟件開發(fā)經(jīng)驗和技巧,這為我今后的學習工作打下了堅實的基礎。而這對我來說是一次豐富的收獲。在這段時間里我學到了很多以前沒有學到的知識,同時也將以前所學過的知識運用到實踐項目中,在提高理論知識的基礎上,也充分地鍛煉了自己的動手能力。當然這個系統(tǒng)還存在許多有待完善之處:·功能相對較少,有待于添加,比方說像文件傳輸,查找等功能?!ぴ谖淖?/p>
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職船舶與海洋工程裝備(船舶導航)試題及答案
- 2025年大學化學(分析化學)試題及答案
- 2025年高職(美容美體藝術)美體塑形階段測試題及答案
- 禁毒宣傳知識課件
- 當前醫(yī)患關系矛盾焦點
- 神秘殺手信息技術
- 祛斑方法培訓課件
- 天津市第九中學2025-2026學年高三上學期12月月考語文試題(含答案)
- 2022-2023學年廣東深圳羅湖區(qū)九年級上學期11月考英語試題含答案
- 2026廣東清遠市連南瑤族自治縣聚匯勞務派遣有限公司第二次招聘門衛(wèi)崗位1人備考題庫及答案詳解(奪冠系列)
- 兒童呼吸道合胞病毒感染診斷治療和預防專家共識 4
- 雨課堂在線學堂《大數(shù)據(jù)技術與應用》作業(yè)單元考核答案
- 全國計算機等級考試一級WPS Office真題題庫及答案
- 養(yǎng)牛場消防知識培訓
- 義警法律知識培訓總結課件
- 實施指南(2025)《DZT 0462.5-2023 礦產(chǎn)資源“三率”指標要求 第 5 部分:金、銀、鈮、鉭、鋰、鋯、鍶、稀土、鍺》解讀
- 棉塵安全培訓課件
- 梯子作業(yè)安全培訓效果課件
- 管控人力成本課件
- 吸附解析塔拆除施工方案
- 留置場所人員管理辦法
評論
0/150
提交評論