基于TCPIP的網(wǎng)絡聊天工具設計說明_第1頁
基于TCPIP的網(wǎng)絡聊天工具設計說明_第2頁
基于TCPIP的網(wǎng)絡聊天工具設計說明_第3頁
基于TCPIP的網(wǎng)絡聊天工具設計說明_第4頁
基于TCPIP的網(wǎng)絡聊天工具設計說明_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

基于TCPIP的網(wǎng)絡聊天工具設計說明_文檔視界基于TCP/IP的網(wǎng)絡聊天工具設計

DesignfortheNetworkChattingToolBasedonTCP/IP【Abstract】:Thesystemisanetworkchattoolwhichcouldmakemultiusercommunicatesonline.Thesystemismainlyusethesocketprincipaltoprogram.TheprogramplatformisVC++6.0whichhasmuchfunction.AndMFCclasslibraryiscombinedtomakethesystem’sfunctioncometrue.TheServerandClienthasthetaskontheir’ownwhichisawonderfulnetworkmodelcanreducetheconsumptionofsystem.ThechattoolisdesignedtobesimilarwithgroupwhereServerreceivesanddealswiththedatagramfromClient.AndtheClientachievesthetarget.Suchasregister,login,sendandreceivedatagramandsoon.Thepaperismainlytoexplaintheresearchstatusandprogramprocess.Andthenitalsoemphasizesonthedesignmethodofeveryblock.

【Keyword】:TCP/IP,Winsockprogram,Client/Server,ChatTool

目錄

第一章引言(1)

1.1聊天系統(tǒng)的研究現(xiàn)狀(1)

1.2聊天系統(tǒng)的開發(fā)目標(1)

1.3聊天系統(tǒng)的開發(fā)意義(2)

1.4論文的主要內(nèi)容(2)

第二章開發(fā)工具和關鍵技術(3)

2.1開發(fā)工具(3)

2.2TCP/IP協(xié)議(3)

2.3客戶機/服務器模式(4)

2.4套接字網(wǎng)絡編程(5)

2.4.1套接字簡介(5)

2.4.2TCP套接字的應用(6)

2.5MFC(MicrosoftFoundationClass)(7)

2.5.1MFC簡介(7)

2.5.2MFC類庫(8)

第三章、系統(tǒng)設計(9)

3.1設計原理(9)

3.2系統(tǒng)總體功能結構(10)

3.3建立類模型(11)

3.3.1服務器端類(11)

3.3.2客戶端類(13)

第四章系統(tǒng)模塊詳細設計(15)

4.1服務器模塊(15)

4.2客戶端模塊(15)

4.2.1注冊模塊(15)

4.2.2登陸模塊(15)

4.3文字聊天模塊(16)

4.3.1私聊模塊(16)

4.3.2群聊模塊(16)

第五章系統(tǒng)測試(17)

5.1測試目的(17)

5.2測試內(nèi)容與結果(17)

5.2.1服務器測試(17)

5.2.2單元模塊測試(18)

5.2.3系統(tǒng)評價:(23)

第六章總結(24)

6.1畢業(yè)設計的總結(24)

6.2經(jīng)驗和感想(24)

致謝..................................................錯誤!未定義書簽。

第一章引言

1.1聊天系統(tǒng)的研究現(xiàn)狀

在高速發(fā)展的信息時代,人們有眾多的通訊手段[1]。比如電話、手機、郵箱等。每個工具都存在不完善的地方,比如郵箱存在實時性的問題,手機、電話等在通信的過程中不能實現(xiàn)一對多的聊天。因此為了填補這個漏洞,開發(fā)出網(wǎng)絡聊天工具是至關重要的。如今網(wǎng)絡聊天工具的發(fā)展也逐漸形成規(guī)模,它不僅價格便宜、通訊迅速,且能同時與多位好友進行在線聊天。近幾年來,網(wǎng)絡聊天工具有了更為廣闊的市場和前景。據(jù)科學統(tǒng)計,截止2009年,在網(wǎng)絡聊天工具的使用方面,全球已經(jīng)達到十億的用戶量,賬號的申請量為25億,我國在該方面的使用數(shù)據(jù)也在不斷增長,截止2013年,我國的使用量為4.68億,其年增長率為12.7%[2]。

網(wǎng)絡聊天工具在廣域網(wǎng)上具有較為成熟的技術,在開發(fā)的過程中,會調用多種協(xié)議,但是使用的核心協(xié)議是TCP協(xié)議或UDP協(xié)議。比如國外產(chǎn)品ICQ、MSN、Yahoo通等,國內(nèi)產(chǎn)品、飛信、新浪UC等。在使用方面,這些工具都各具特色,除了聊天功能,都存在一些增值功能。但是這些產(chǎn)品的開發(fā)過程是作為商業(yè)機密處理,因此對其編程機制等是很難了解到的。不過從宏觀的角度出發(fā),聊天工具之間能夠通信都是因為有通信接口的存在,且在開發(fā)過程中,調用TCP/IP協(xié)議實現(xiàn)相應的功能。而相比來說,局域網(wǎng)的功能實現(xiàn)難度較低,且其存在的網(wǎng)絡結構并不是很復雜,因此討論局域網(wǎng)的聊天工具也是具有一定的研究價值。

1.2聊天系統(tǒng)的開發(fā)目標

本次設計主要是建立在MFC封裝下的CSocket網(wǎng)絡編程以及TCP/IP協(xié)議的基礎上,實現(xiàn)局域網(wǎng)內(nèi)的多人在線聊天。該系統(tǒng)是以群為開發(fā)模型。在該方案中,是以VisualC++6.0為開發(fā)平臺,利用MFC類庫,結合套接字的形式,并以對話框的形式進行輸入和顯示,最終實現(xiàn)了通過服務器中轉的文字聊天。在客戶端功能模塊設計中,存在注冊模塊、登陸模塊、私聊模塊、群聊模塊以及收發(fā)離線消息的模塊。

1.3聊天系統(tǒng)的開發(fā)意義

該聊天系統(tǒng)主要是為了保證在局域網(wǎng)環(huán)境下,多位用戶之間能夠有一個共同的平臺進行在線聊天,并且能夠選擇特定好友進行私聊。雖然該系統(tǒng)消耗的系統(tǒng)資源較少,使用簡單的網(wǎng)絡結構,但是它可以為企業(yè)提供一種安全、快速、有效的通信平臺,局域網(wǎng)也不會因為聊天系統(tǒng)間的工作增加過多的負荷,且其存在的各種通信需求能夠得到相應的處理。在具體實現(xiàn)中,企業(yè)無需對局域網(wǎng)硬件做出任何改動,就可以使用局域網(wǎng)聊天系統(tǒng)帶來的通信機制。

局域網(wǎng)聊天系統(tǒng)的開發(fā)實例有多種,其中以Socket套接字作為網(wǎng)絡編程接口來開發(fā)局域網(wǎng)聊天軟件是最為廣泛的應用方式,能夠處理傳統(tǒng)通信中遺留下來的通信問題,并不斷適應新型的網(wǎng)絡應用[3]。例如在企業(yè)內(nèi)部,套接字通信原理可以很好的應用在教育、娛樂、通信等方面。且采用套接字原理通信的方式在信息的發(fā)送和接收方面有較快的速度,在網(wǎng)絡帶寬方面占用較少的資源,在服務器的吞吐能力方面存在較低的值,能夠在最大程度上保證通信的信息安全。

1.4論文的主要內(nèi)容

本次聊天系統(tǒng)設計的重點是通信功能。在功能方面,主要是保證用戶可以注冊號碼,登陸界面,進行私聊、群聊,并且能夠發(fā)送和接收離線消息。在窗口方面,采用卡通人物進行界面美觀,保證系統(tǒng)的人性化設計。下面將對各章節(jié)內(nèi)容進行綜述。

第1章是對本系統(tǒng)的研究現(xiàn)狀、開發(fā)的意義等進行了深入的闡述。

第2章是介紹在開發(fā)過程中所運用到的相關技術。例如TCP/IP協(xié)議、Socket編程技術,MFC類庫、客戶端/服務器模式等[4]。

第3章是系統(tǒng)的總體設計。將對系統(tǒng)的設計流程進行一定程度的分析,繪制出系統(tǒng)的總體功能結構圖,并對程序代碼中使用到的函數(shù)類及成員函數(shù)進行介紹。

第4章主要是對系統(tǒng)的各個部分設計進行分析。

第5章介紹系統(tǒng)測試。主要是保證系統(tǒng)能夠正常運行,并實現(xiàn)預期設定的功能[5]。

第二章開發(fā)工具和關鍵技術

2.1開發(fā)工具

根據(jù)系統(tǒng)的用戶需求以及總體的設計思路,為了能夠在最大程度上發(fā)揮系統(tǒng)的性能,同時也為了能夠在一定程度上實現(xiàn)系統(tǒng)的高可移植性,需要選擇一個適當、有效的開發(fā)工具。本次設計整體以VisualC++6.0為開發(fā)平臺,該平臺是一個非常強大且完善的程序開發(fā)環(huán)境,存在眾多輔助開發(fā)工具。比如編譯器、向導類等。它是一個以Windows操作系統(tǒng)作為平臺基礎的集成環(huán)境[6]。在系統(tǒng)開發(fā)的過程中,使用了MFC封裝下的CSocket套接字進行編程。該方式可以在很大程度上降低網(wǎng)絡編程的難度。

2.2TCP/IP協(xié)議

TCP/IP也被稱作傳輸控制協(xié)議/網(wǎng)際協(xié)議,作為網(wǎng)絡互連的核心協(xié)議,受到廣泛的應用。該協(xié)議類型作為開放性的標準應用在各種計算機中,在一定程度上保證系統(tǒng)間通信的正常運行。在計算機網(wǎng)絡中,TCP/IP協(xié)議將對網(wǎng)絡地址進行統(tǒng)一分配,保證每臺計算機系統(tǒng)都存在獨特的地址。TCP/IP協(xié)議不僅僅只有TCP和IP協(xié)議,它包括一百多個協(xié)議,其中屬于核心協(xié)議的是傳輸層協(xié)議、物理接口層以及網(wǎng)絡層協(xié)議[7]。其他協(xié)議也在網(wǎng)絡中發(fā)揮各自的作用,如ICMP協(xié)議。TCP和UDP協(xié)議作為核心協(xié)議,自然存在其優(yōu)勢的地方。

TCP也稱作傳輸控制協(xié)議,主要是傳輸數(shù)據(jù)流[8]。它是通過面向連接的方式,使用校驗、確認信息等形式實現(xiàn)數(shù)據(jù)的傳輸。因此該協(xié)議具有一定的可靠性。在具體的功能實現(xiàn)中,主要是利用三次握手和滑動窗口的機制來控制流量,從而保證傳輸?shù)目煽啃?。相比之下,用戶?shù)據(jù)包協(xié)議UDP屬于不可靠協(xié)議。在傳輸數(shù)據(jù)的過程中,不能保證信息的正確傳輸,即時傳輸失敗,也不會向對方發(fā)送通知。這是一項簡單的傳輸層協(xié)議,因此UDP協(xié)議的數(shù)據(jù)包包頭的字節(jié)數(shù)較少,存在較少的負載。在實際的網(wǎng)絡編程中,用戶是通過操作系統(tǒng)核外的應用程序進行編程[9]。編程的核心是套接字的運用。

2.3客戶機/服務器模式

客戶機/服務器方式是用戶和編程者都很熟知的網(wǎng)絡結構,在TCP/IP環(huán)境下,主要是運用該模式進行網(wǎng)絡編程。它主要是對網(wǎng)絡程序的一種運行方式進行描述,能夠實現(xiàn)網(wǎng)絡用戶間的相互溝通。在該模式下,計算機系統(tǒng)的硬件環(huán)境能夠很好的發(fā)揮其長處,并保證客戶端以及服務器都有適當?shù)娜蝿?,將原有的通訊開銷降至一定水平??蛻舳撕头掌魇峭ㄟ^主動請示達到發(fā)送消息的目的。客戶端首先是向服務器發(fā)送請求消息,并等待響應結果。而服務器會對用戶端的信息做出判斷和應答。

在具體的操作過程中,先啟動服務器。服務器通過消息響應函數(shù)完成一系列操作。具體過程如下:第一,服務器首先創(chuàng)建套接字,打開與客戶端通信的渠道。表示服務器處于愿意接受數(shù)據(jù)的狀態(tài);第二,服務器創(chuàng)建監(jiān)聽套接字,偵聽客戶端的請求消息[10];第三,對接收到的數(shù)據(jù)做出消息響應,向客戶端發(fā)送消息處理結果或是將數(shù)據(jù)存儲到緩沖區(qū)中。第四,回到第二個步驟,繼續(xù)進行監(jiān)聽動作。第五,關閉服務器。

在整個過程中,客戶端主要進行以下幾個操作:第一,將與服務器通信的端口打開,并成功連接到服務器;第二,將請求內(nèi)容通過套接字端口發(fā)送給服務器,并等待服務器發(fā)回的處理消息。第三,客戶端在結束與服務器的通信后,要關閉通信端口。客戶端與服務器的工作關系圖如圖2-1所示[11]。

圖2-1客戶端/服務器通信結構示意圖

2.4套接字網(wǎng)絡編程

2.4.1套接字簡介

Socket又稱作套接字,從基本概念上分析,它主要包含IP地址以及Port端口號。在一定協(xié)議條件下,只要利用Socket套接字就可以實現(xiàn)計算機系統(tǒng)間的信息發(fā)送和接收。換句話說,即兩個應用程序可以通過套接字進行相互連接。在客戶機/服務器模式中,為了實現(xiàn)簡單的網(wǎng)絡編程,微軟公司在90年代與其他家公司配合制定出一套通用的套接字規(guī)范,用于Winsock網(wǎng)絡編程。在使用Winsock網(wǎng)絡編程過程中,會結合多項協(xié)議。而其中應用最廣泛的是TCP/IP協(xié)議。應用進程間的相互通信主要是利用Winsock規(guī)范中的API,為了更進一步降低網(wǎng)絡編程的難度,將Winsock實現(xiàn)具體功能的API進行封裝,形成MFCSocket。編程過程中調用的是MFC封裝后的套接字類,如CSocket[12]。如今網(wǎng)絡開發(fā)應用中最為廣泛使用的應用程序接口就是Socket接口,在實際的操作系統(tǒng)調用以及通信協(xié)議實現(xiàn)功能中,主要是采用圖2-2的層級關系。

圖2-2套接字實現(xiàn)通信的層級關系圖

2.4.2TCP套接字的應用

本次設計的聊天室主要是運用TCP套接字來實現(xiàn)信息傳輸,TCP協(xié)議是采用面向連接的方式[13]。因此在C/S模式下,要保證服務器與客戶端連接后,才能進行信息傳輸。在雙方通信的過程中,服務器采用以下幾個步驟來使用套接字接口:第一,使用Socket()函數(shù)創(chuàng)建服務器端通信的套接口,如果沒有成功創(chuàng)建套接字端口,就無法繼續(xù)執(zhí)行;第二,將服務器的地址與所創(chuàng)建的套接口進行結合的過程中,要使用Bind()函數(shù)完成[14]。該函數(shù)不僅確定本地的IP地址,還能綁定Port端口號。如果采用Create()函數(shù)進行,前兩步將并為一步。即不采用Bind()函數(shù);第三,服務器利用Listen()來偵聽請求消息,并打開通道準備接收;第四,當客戶端發(fā)來信息后,服務器調用Accept()函數(shù),并新創(chuàng)建一個套接字,來重載Revc()函數(shù),從而達到接受數(shù)據(jù)的目的;第五,服務器如果要發(fā)送應答消息給客戶端,主要采用Send()函數(shù);第六,最后停止套接口的使用,即調用CloseSocket()。

在這個過程中,客戶端主要進行以下的步驟:第一,通過Create()函數(shù),在客戶端創(chuàng)建一個套接字;第二,客戶端與服務器的連接通過Connect()函數(shù)來實現(xiàn);第三,實現(xiàn)連接后,使用Send()函數(shù)發(fā)送消息?;蛘呤羌虞dRecv()函數(shù)接收消息;第四,使用CloseSocket()停止套接字接口的使用。整體的TCP套接字運用流程如圖2-3所示。

服務器方

圖2-3C/S模式下TCP套接字運用流程圖

2.5MFC(MicrosoftFoundationClass)

2.5.1MFC簡介

在VC++環(huán)境中,存在一個函數(shù)框架MFC,利用MFC類庫可以在一定程度上降低網(wǎng)絡編程的難度。它是依附在標準的軟件開發(fā)平臺VC++下的輔助軟件開發(fā)包,與VC++關系密切。網(wǎng)絡編程也因為MFC類庫的存在變得更加簡單。它能夠為許多應用程序提供函數(shù)模型[15]。同時VC++內(nèi)部具有許多支持網(wǎng)絡編程的東西,例如存在類向導,能夠自動生成一些簡單的程序,甚至是文檔服務器等復雜的程序,可以在很大程度上減少軟件開發(fā)的時間。在整個Windows家族中,MFC能夠很好的與各項開發(fā)工具進行兼容,其消息映射機制能夠在一定程度上減少虛函數(shù)表的數(shù)量。

2.5.2MFC類庫

傳統(tǒng)的C語言更多的是對WidowsAPI進行直接調用,而封裝后的MFC類庫是對原有的C++層次進行拓展。內(nèi)部已經(jīng)存在多種標準的樣板文件代碼,主要是應用在C編寫的Windows程序中。因此,MFC類庫主要是提供網(wǎng)絡編程的框架,讓網(wǎng)絡編程更易實現(xiàn),而且其性能并沒有受到損失。比如,4.0的版本中就存在200個不同的類,但是在實際的程序編寫中,只會應用到十多個不同的類,根據(jù)這些類就可以編寫出很完善和漂亮的程序。

MFC結構主要存在以下幾種類別:一是,Cobject基類。該類主要是作為大多數(shù)派生類的基類,其中CAsyncsocket類是從該類派生出來的。它主要對WindowsSocket的API進行封裝,但是封裝級別較低[16],而CSocket是繼承了CAsyncsocket,在比較高的層次封裝Windowssocket的API;二是,MFC應用結構類。該類主要是對一個整體的函數(shù)模型進行構造,能夠在很大程度上為許多應用程序提供通用的功能,編程者可以在對應的框架上寫出所要求的功能;三是,窗口、對話和控件類。類Cwnd能夠被自己使用,也是許多派生新類的基類,它與它的派生類共同封裝了Hwnd,Cwnd是一個Windows窗口,其中存在的各項窗口是由Cwnd的派生類來表示;四是,文件和數(shù)據(jù)庫類。這些類是表示能夠在一個數(shù)據(jù)庫或是磁盤文件中存儲相關信息,其中DAO以及ODBC主要是實現(xiàn)訪問數(shù)據(jù)庫的功能;五是,MFC的層次結構上也存在一些簡單的數(shù)據(jù)庫類型類、數(shù)據(jù)列表、調試類等。

第三章系統(tǒng)設計

3.1設計原理

該聊天室的設計是在TCP/IP協(xié)議的支持下。網(wǎng)絡編程分成兩部分進行,即服務器與客戶機。在設計的過程中,主要是采用TCP面向連接的方式并結合Socket套接字,實現(xiàn)通信[17]。

在代碼設計中,服務器端主要是由CSocket派生出兩個新類,取名CServerSocket和ClientSocket??蛻舳酥械腃ClientSocket也是由CSocket派生出來。服務器的CServerSocket為監(jiān)聽套接字,當客戶端發(fā)來的消息被服務器偵聽到時,將加載OnAccept函數(shù),并新建一個通信套接字。而客戶端的通信套接字CClientSocket主要是用于與服務器建立通信套接字,發(fā)送注冊、登陸等命令字[18]。

在操作流程的設計中,首先是將服務器端啟動,客戶端輸入昵稱和密碼,將連接請求發(fā)送給服務器,服務器響應客戶端的登陸請求,并更新聊天室的用戶列表。此時用戶間可以進行文字聊天。且如果選擇用戶列表中的用戶進行私聊,假設此時用戶不在線。那么該離線消息同樣會發(fā)到服務器,由服務器保存。等到用戶上線提取離線消息時,由服務器端轉發(fā)出去。同樣客戶端要實現(xiàn)多人在線聊天的功能,保證聊天室的正常運行。其實現(xiàn)的基本功能如圖3-1所示。

圖3-1基本功能流程圖

3.2系統(tǒng)總體功能結構

由客戶端程序界面可知,該聊天工具包含以下主要功能:用戶注冊;用戶登

錄;發(fā)送和接收私聊信息;發(fā)送和接收群聊消息;發(fā)送和接收離線消息。

由服務器端程序界面可知,服務器實現(xiàn)監(jiān)聽數(shù)據(jù)、連接客戶端、查詢并記錄

數(shù)據(jù)到數(shù)據(jù)庫、發(fā)出應答消息等功能。最終實現(xiàn)的是更新用戶列表,顯示在線用戶和離線用戶,作為客戶端的中轉站,轉發(fā)客戶端的消息,保證客戶端的通信順利進行。

根據(jù)系統(tǒng)的要求,畫出功能模塊圖3-2所示:

圖3-2系統(tǒng)總體功能結構服務器端模塊聊天工具

客戶端端模塊

接監(jiān)聽客戶數(shù)據(jù)處理用戶注冊用戶登錄信息通信

塊群聊模塊離線消息

3.3建立類模型

3.3.1服務器端類

3.3.1.1類的識別和功能

第一,CChatServerAPP類。服務器應用程序類。通過該類實現(xiàn)服務器程序的初始化,且創(chuàng)建監(jiān)聽套接字,開啟服務器服務。

第二,CServerSocket類。用來偵聽客戶的連接請求,調用OnAccept函數(shù)來接收客戶端的登錄請求。

第三,CChatServerDlg類。服務器窗口類,是服務器主對話框的界面,主要是操作數(shù)據(jù)庫。完成服務器離線列表的初始化。對用戶的上線、離線進行記錄,并更新服務器端以及客戶端的在線、離線列表。保存離線消息,并對請求離線消息的命令字進行處理。

第四,CClientSocket類。通信套接字類,該類主要接收客戶端的消息,并重載OnReceive函數(shù),判斷消息類型后,對各項消息內(nèi)容進行處理,并將處理結果發(fā)給客戶端。

3.3.1.2主要的類成員函數(shù)及其功能

在MFC封裝下的CSocket網(wǎng)絡編程中,在服務器端的程序中主要設置了以上幾種類別,在各類中,定義了類成員函數(shù),用于消息響應。其類成員名字及功能如表3-1所示。

表3-1服務器主要的類成員函數(shù)及其功能

3.3.2客戶端類

3.3.2.1類的的識別和功能

第一,CMyChatAPP類。客戶端應用程序類。該類主要是創(chuàng)建套接字對象指針ClientSocket、登陸窗口指針、聊天窗口指針,并動態(tài)分配套接字,響應用戶在窗口的操作后,會及時銷毀套接字。

第二,CAskDlg類。用戶注冊類。保證用戶注冊窗口的正常運行,將用戶的注冊信息發(fā)往服務器。服務器將此消息保存到數(shù)據(jù)庫中。

第三,CLoginDlg類。用戶登陸類。保證用戶登陸窗口的正常運行。將用戶登陸的昵稱、密碼等信息發(fā)往服務器。服務器對其發(fā)來的信息與數(shù)據(jù)庫的信息進行對比判斷,并做出響應。

第四,CMyChatDlg類。聊天窗口類。提供用戶文字聊天窗口界面,把用戶的群聊信息、各控件命令字等發(fā)送給服務器,并接受服務器發(fā)來的應答消息,更新離線以及在線用戶列表,更新聊天內(nèi)容。

第五,CLeave類。查看離線消息類。該類主要實現(xiàn)在編輯框中顯示離線消息。

第六,CPrivate類。私聊信息類,該類主要完成私聊信息內(nèi)容、用戶名、時間的發(fā)送。

3.3.2.2主要的類的成員函數(shù)及其功能

在客戶端的程序中主要設置了以上幾種類別,在各類中,定義了類成員函數(shù),用于消息響應。其類成員名字及功能如表3-2所示。

表3-2客戶端主要的類成員函數(shù)及其功能

第四章系統(tǒng)模塊詳細設計

4.1服務器模塊

服務器模塊有初始化界面,程序編譯成功后,服務器的消息顯示框中會顯示“服務器初始化成功”。在這個過程中,會不斷等待用戶端的消息,并做出消息響應。比如當客戶端有用戶登錄請求,服務器處理數(shù)據(jù)成功后,會在顯示框中顯示用戶進入聊天界面的提醒。并且會對服務器以及客戶端的在線列表、離線用戶列表進行更新。

4.2客戶端模塊

4.2.1注冊模塊

用戶要進入該聊天室,需要先進入客戶端的注冊模塊,向服務器注冊一個賬號。服務器返回該賬號注冊成功的消息后,用戶以后才能利用該賬號進出聊天室。在程序編譯成功后,會有一個登錄窗口出現(xiàn)。如果用戶有相應的賬號,可以輸入正確的信息進入聊天界面。如果沒有,要點擊申請新號的相關按鍵,程序會彈出注冊窗口。在注冊窗口,用戶輸入系統(tǒng)需要的相關信息后,要點擊“確定”按鈕。如果輸入空的字符,則彈出提示框,要用戶重新輸入。如果操作正確,注冊模塊會將昵稱、密碼等信息,通過套接字端口發(fā)送給服務器請求注冊一個新用戶。

服務器收到客戶端發(fā)來的消息后,首先判斷消息類型。判斷得知是申請賬號的命令字,就將用戶賬號、密碼等信息插入到數(shù)據(jù)庫。并給客戶單返回一個獨特登陸號,作為用戶的賬號??蛻魡螐姆掌鞫私邮盏阶猿晒Φ南⒑?,在登陸界面中填寫信息,進入聊天窗口。

4.2.2登陸模塊

登陸對話框的設計主要是對客戶身份的合法性進行檢驗。如果是非法的用戶,將無法進入聊天界面。其設計算法如下:當客戶端程序編譯成功時,將出現(xiàn)登陸界面。用戶將昵稱和密碼輸入到登陸對話框的編輯框內(nèi),并確認登陸。如果輸入空字符,會彈出輸入有誤的提示框。如果輸入正確,登陸模塊會將用戶輸入的信息通過套接字端口發(fā)送給服務器,并等待服務器的回應。

服務器重載OnReceive函數(shù),判斷消息類型,得知是用戶登陸或退出的信息,查詢數(shù)

據(jù)庫,通過昵稱得到密碼,并檢索記錄,判斷密碼的正確性。如果密碼輸入無誤,就對客戶端做出消息響應。并且會在服務器的消息列表內(nèi)顯示,有客戶端成功登陸。同時更新客戶端以及服務器端的在線用戶列表[19]。如果賬號或密碼有誤,會提示無法登陸。用戶成功登陸后,會進入聊天室界面,并且在該主界面會得到服務器發(fā)來的新更新的好友列表,會在離線用戶列表以及在線用戶列表中顯示好友狀態(tài)。

4.3文字聊天模塊

4.3.1私聊模塊

4.3.1.1發(fā)送和接收在線消息

用戶在在線好友列表中選擇一個好友作為聊天對象,雙擊該好友,用Getcursel函數(shù)設置某個列表項為選中項,得到該好友的文本信息后,會彈出用戶聊天窗口,并且發(fā)送私聊命令字給服務器,由服務器中轉。服務器得到私聊請求后,遍歷用戶套接字鏈表,并將消息發(fā)給所對應的用戶。被請求私聊的客戶端,會彈出一個對話框[20]。顯示是否愿意與對方聊天。如果確定,雙方將進行聊天。在這個過程中,服務器作為中轉站,轉發(fā)客戶端的消息。

4.3.1.2發(fā)送和接收離線消息

如果用戶在離線用戶列表中選擇一個好友作為聊天對象,雙擊該好友后,同樣用Getcursel函數(shù)設置某個列表項為選中項,得到該好友的文本信息后,會彈出一個窗口,提示“您要對話的用戶已離線,該消息將作為離線消息發(fā)送”,發(fā)送離線消息的命令字以及離線消息內(nèi)容也會發(fā)給服務器。服務器收到該數(shù)據(jù)后,會存儲到緩沖區(qū)中。等到離線用戶登錄后,點擊“接收離線消息”按鈕,會將本機昵稱及命令字發(fā)給服務器,服務器會在數(shù)據(jù)庫中檢索記錄,找到匹配消息后發(fā)送給在線用戶。

4.3.2群聊模塊

用戶在聊天室的消息編輯框中,將消息編輯好后,點擊發(fā)送按鈕,會調用MyChatDlg的OnSend()函數(shù),向服務器發(fā)送消息的結構體、命令字、長度、當前時間、時間格式、昵稱等,服務器接收到客戶端發(fā)來的數(shù)據(jù)后,會判斷消息類型,并轉發(fā)給所有在線用戶。在聊天室的消息列表框中會出現(xiàn)服務器轉發(fā)來的消息。

第五章系統(tǒng)測試

5.1測試目的

本章節(jié)對系統(tǒng)的各模塊進行測試,驗證各部分能否實現(xiàn)正常的功能。

5.2測試內(nèi)容與結果

5.2.1服務器測試

首先啟動服務器,初始化成功后,會在消息列表中顯示成功初始化的消息。測試截圖5-1所示。

圖5-1服務器啟動窗口

在客戶端測試過程中,服務器對用戶進出聊天室的情況進行記錄和更新,測試截圖如圖5-2所示。

圖5-2服務器工作窗口

5.2.2單元模塊測試

5.2.2.1登陸模塊測試

登陸模塊的測試狀態(tài)設置如表5-1。

登陸窗口測試圖如圖5-3至5-6所示:

表5-1測試狀態(tài)設置

用例狀態(tài)卡號密碼說明結果

1連接非空非空

賬號或密碼錯

誤登陸失敗,提示輸入信息有誤。

2連接非空非空

賬號正確、密

碼正確登陸成功,進入聊天室界面

3連接//

賬號或密碼為

空登錄失敗,提示用戶或密碼不能為空。

6非連接非空非空非空

登錄失敗,提示連

接服務器失敗。

圖5-3登陸窗口

圖5-4客戶端連接服務器失敗效果圖

圖5-5用戶輸入的帳號或密碼錯誤

圖5-6用戶成功登錄,顯示聊天室窗口

5.2.2.2注冊模塊測試

注冊模塊的測試狀態(tài)設置如表5-2所示。登陸窗口測試圖如圖5-7所示:

表5-2注冊模塊的測試狀態(tài)設置

用例狀態(tài)用戶名密碼結果

1連接非空非空注冊成功

2連接空非空注冊失敗,提示用戶名或密碼不能為空

3連接非空空注冊失敗,提示用戶名或密碼不能為空

4斷開//注冊失敗

圖5-7注冊模塊截圖

5.2.2.3群聊模塊測試

該模塊主要是群聊模塊。測試的過程主要是在客戶端登陸后,能夠實現(xiàn)在聊天室內(nèi)多人在線聊天,并實時更新在線和離線好友列表情況。

群聊模塊截圖如5-8所示:

圖5-8多人在線聊天

5.2.2.4私聊模塊測試

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論