版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
經(jīng)典word整理文檔,僅參考,雙擊此處可刪除頁眉頁腳。本資料屬于網(wǎng)絡(luò)整理,如有侵權(quán),請聯(lián)系刪除,謝謝!本科生畢業(yè)論題學(xué)習(xí)中心:層專年學(xué)學(xué)次:業(yè):級:號:生:??破瘘c(diǎn)本科年春/秋季指導(dǎo)教師:完成日期:年月日網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)內(nèi)容摘要隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)已經(jīng)成為人們生活中不可缺少的一部分,通過網(wǎng)上聊天已經(jīng)成為人與人之間的網(wǎng)絡(luò)通信的聊天,交流和聯(lián)系的一種方式。因此,更多的網(wǎng)站開始提供在線聊天功能。與此同時,以其方便,快捷,成本低的優(yōu)勢,聊天室眾多企業(yè)的青睞,許多企業(yè)網(wǎng)站也加入了聊天室,從而促進(jìn)消費(fèi)者與消費(fèi)者和消費(fèi)者之間的通信模塊。本文是一個軟件工程的在線聊天系統(tǒng),專注于系統(tǒng)的開發(fā),使用系統(tǒng)的分析,設(shè)計(jì)和思維測試軟件工程知識來實(shí)現(xiàn)的描述,其中包括三個主要方面的軟件生命周期:軟件定義(問題定義,可行性研究,需求分析),軟件開發(fā)(總體設(shè)計(jì),詳細(xì)設(shè)計(jì),編碼,測試)和運(yùn)行維護(hù)。通過運(yùn)用軟件工程知識處理實(shí)際,加強(qiáng)的問題,清晰,可靠的標(biāo)準(zhǔn)化,使得程序易于維護(hù)。該軟件使用JAVA編寫,具有良好的兼容性,易于實(shí)現(xiàn)。操作簡單,使用方便結(jié)構(gòu)簡單,易于搜索,實(shí)用的聊天室。關(guān)鍵詞:網(wǎng)絡(luò);通信;套接字I網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)目錄內(nèi)容摘要·····························································································I引言·······························································································41概述·······························································································51.1課題研究背景和意義·································································51.2本文的主要內(nèi)容及組織結(jié)構(gòu)························································52網(wǎng)絡(luò)應(yīng)用系統(tǒng)開發(fā)技術(shù)介紹································································72.1TCP/IP協(xié)議概述······································································72.2客戶/服務(wù)器模型······································································72.3Socket網(wǎng)絡(luò)編程······································································72.4開發(fā)工具與運(yùn)行環(huán)境·································································82.5其他技術(shù)················································································83網(wǎng)絡(luò)聊天系統(tǒng)的分析與設(shè)計(jì)······························································103.1可行性分析···········································································103.2需求分析··············································································103.3系統(tǒng)總體設(shè)計(jì)········································································113.3.1系統(tǒng)架構(gòu)模型································································123.3.2功能模塊設(shè)計(jì)································································123.3.3系統(tǒng)通信設(shè)計(jì)································································123.3.4數(shù)據(jù)庫設(shè)計(jì)···································································134網(wǎng)絡(luò)聊天系統(tǒng)詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)···························································144.1服務(wù)器端設(shè)計(jì)與實(shí)現(xiàn)·······························································144.1.1服務(wù)器等待連接進(jìn)程/線程設(shè)計(jì)·········································154.1.2服務(wù)器處理客戶端信息進(jìn)程/線程設(shè)計(jì)································164.2客戶端設(shè)計(jì)與實(shí)現(xiàn)··································································164.2.1登陸模塊······································································164.2.2主界面模塊···································································164.2.3私聊模塊······································································194.2.4聊天記錄管理模塊··························································21II網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)5測試·····························································································235.1軟件測試概述········································································235.2測試策略與結(jié)果分析·······························································23結(jié)論·································································································28參考文獻(xiàn)···························································································29III網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)引言隨著不斷投入的信息技術(shù),網(wǎng)絡(luò),作為一種新生事物,近年來現(xiàn)代技術(shù)的普及得到了前所未有的深入,網(wǎng)絡(luò)應(yīng)用不斷涌現(xiàn)層出不窮,所有的層級和所有年齡的用戶提供不同的個性化服務(wù)?,F(xiàn)代小型和中小型企業(yè)的領(lǐng)導(dǎo)人認(rèn)識到,進(jìn)一步提高企業(yè)信息化的必要性。為了使企業(yè)在瞬息萬變的信息時代生存,適應(yīng)激烈的市場競爭,現(xiàn)代企業(yè)的要求是能夠特別是領(lǐng)導(dǎo)具有能力的員工,實(shí)時通信系統(tǒng)是搭建在員工之間的溝通和交流,是必要的條件。系統(tǒng)開發(fā)是一個非常復(fù)雜的系統(tǒng)工程。這里,對基本的方法和系統(tǒng)發(fā)展的方法進(jìn)行介紹,和有內(nèi)容是在論文里列出。為了提高市場競爭力,我們必須全面調(diào)查和對市場的詳細(xì)研究,同時也有良x性就顯得尤為重要,對于企業(yè)網(wǎng)上聊天系統(tǒng)是一種交流和溝通的平臺,系統(tǒng)可以成為中小企業(yè)溝通的理想平臺。如果信息能及時反饋,及時處理并做出相應(yīng)的動作,將能進(jìn)一步加強(qiáng)在現(xiàn)代經(jīng)濟(jì)市場的中小型企業(yè)的競爭力。網(wǎng)絡(luò)通信是網(wǎng)絡(luò)應(yīng)用的一個重要體現(xiàn)。即時通訊是網(wǎng)絡(luò)應(yīng)用的一個重要方面。聊天系統(tǒng),主要用于小型企業(yè),學(xué)?;蛐⌒途钟蚓W(wǎng)。該應(yīng)用程序使得短距離通信更高效,更便捷,更高效,以反映現(xiàn)代IM的特點(diǎn)。該系統(tǒng)可滿足中小型企業(yè),學(xué)校內(nèi)部網(wǎng)絡(luò)即時通訊需求的需要,內(nèi)部網(wǎng)絡(luò)業(yè)務(wù)的正常環(huán)境下,提供了即時通信的能力,本系統(tǒng)采用的JAVA開發(fā)。該系統(tǒng)可為中小型企業(yè)的共同努力,相互溝通提供了一個功能強(qiáng)大的工具,在局域網(wǎng)中使用這個系統(tǒng),可以為企業(yè)提供員工溝通的幫助,以提高工作效率。4網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)11.1課題研究背景和意義隨著現(xiàn)代技術(shù)的普及和信息技術(shù)的不斷普及,網(wǎng)絡(luò)作為一種新事物,近年來得到了前所未有的普及和深入,網(wǎng)絡(luò)應(yīng)用層出不窮,給用戶的各個階層和各個年齡段提供了不同的個性化服務(wù)。和現(xiàn)代中小企業(yè)的領(lǐng)導(dǎo)認(rèn)識到進(jìn)一步提高企業(yè)信息化的必要性。為使企業(yè)在瞬息萬變的信息時代生存下來,適應(yīng)激烈的市場競爭,現(xiàn)代企業(yè)的要求是能夠溝通,尤其是領(lǐng)導(dǎo)者和員工之間的共同能力和實(shí)時通信系統(tǒng)是在這樣的條件下誕生的。系統(tǒng)開發(fā)是一個非常復(fù)雜的系統(tǒng)工程。介紹了系統(tǒng)開發(fā)的基本過程和方法,并對相關(guān)文獻(xiàn)進(jìn)行了介紹。為了提高市場競爭力,我們必須充分調(diào)查和詳細(xì)研究市場,而且還有一個良好的客戶服務(wù)。企業(yè)在復(fù)雜環(huán)境中應(yīng)作出對策。員工與員工之間的即時交流和領(lǐng)導(dǎo)是特別重要的,網(wǎng)上聊天系統(tǒng)是企業(yè)的一種溝通和溝通的平臺,系統(tǒng)可以成為中小企業(yè)溝通的理想平臺。如果能夠及時反饋信息,及時處理并做出相應(yīng)的行動,將能夠進(jìn)一步提高中小企業(yè)在現(xiàn)代經(jīng)濟(jì)市場中的競爭力。網(wǎng)絡(luò)通信是網(wǎng)絡(luò)應(yīng)用的一個重要體現(xiàn)。即時消息是網(wǎng)絡(luò)應(yīng)用的一個重要方面。該聊天系統(tǒng)主要用于小企業(yè)、學(xué)?;蛐【钟蚓W(wǎng)。此應(yīng)用使短距離通信更高效、方便,更有效地體現(xiàn)了現(xiàn)代通信的特點(diǎn)。該系統(tǒng)可以滿足中小企業(yè)的需求,學(xué)校內(nèi)部網(wǎng)絡(luò)即時通信的需求,內(nèi)部網(wǎng)絡(luò)的正常操作環(huán)境下,提供即時通信的能力,本系統(tǒng)采用JAVA開發(fā)。該系統(tǒng)可以為中小企業(yè)的協(xié)同工作,相互溝通提供一個強(qiáng)大的工具,利用該系統(tǒng)在局域網(wǎng)中,可以為企業(yè)員工溝通提供幫助,提高工作效率。1.2本文的主要內(nèi)容及組織結(jié)構(gòu)本文研究的內(nèi)容為局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。本文的組織結(jié)構(gòu):全文共分五章。第一章,主要部分是概述。第二章,介紹網(wǎng)絡(luò)應(yīng)用系統(tǒng)開發(fā)技術(shù)介紹。第三章,介紹網(wǎng)絡(luò)聊天系統(tǒng)的分析與設(shè)計(jì)。5網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)第四章,介紹網(wǎng)絡(luò)聊天系統(tǒng)詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)。第五章,介紹相關(guān)測試部分的內(nèi)容。6網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)22.1TCP/IP協(xié)議概述TCP/IP是專為大型網(wǎng)絡(luò)協(xié)議的行業(yè)定制標(biāo)準(zhǔn)套件。在TCP/IP協(xié)議族包括IPv4和IPv6的套協(xié)議。對TCP/一個基于TCP/IP的網(wǎng)絡(luò),路由器可以轉(zhuǎn)發(fā)給路由器,一個節(jié)點(diǎn)或者是主機(jī)或路由器。在一個基于TCP/IP的網(wǎng)絡(luò),一個子網(wǎng)是被路由器使用相同的IP地址前綴的一個或多個LAN段,和一個網(wǎng)絡(luò)是通過路由器連接的兩個或更多個子網(wǎng)。2.2客戶/服務(wù)器模型(Client)(通常是一個采用圖形用戶界面的程序)與服務(wù)器(Server)區(qū)分開來。每一個客戶端軟件的實(shí)例都可以向一個服務(wù)器或應(yīng)用程序服務(wù)器發(fā)出請求。有很多不同類型的服務(wù)器,例如文件服務(wù)器、游戲服務(wù)器等。C/S通過不同的途徑應(yīng)用于很多不同類型的應(yīng)用程序,最常見就是目前在因特網(wǎng)上用的網(wǎng)頁。例如,當(dāng)你在維基百科閱讀文章時,你的電腦和網(wǎng)頁瀏覽器就被當(dāng)做一個客戶端,同時,組成維基百科的電腦、數(shù)據(jù)庫和應(yīng)用程序就被當(dāng)做服務(wù)器。當(dāng)你的網(wǎng)頁瀏覽器向維基百科請求一個指定的文章時,維基百科服務(wù)器從維基百科的數(shù)據(jù)庫中找出所有該文章需要的信息,結(jié)合成一個網(wǎng)頁,再發(fā)送回你的瀏覽器。2.3Socket網(wǎng)絡(luò)編程套接字是通信的基石,是支持TCP/IP協(xié)議的網(wǎng)絡(luò)通信的操作單元??梢詫⑻捉幼挚醋鞑煌鳈C(jī)間的進(jìn)程進(jìn)行雙向通信的端點(diǎn),它構(gòu)成了單個主機(jī)內(nèi)及整個網(wǎng)絡(luò)間的編程界面。套接字存在于通信域中。通信域是為了處理一般的線程通過套接字通信而引進(jìn)的一種抽象概念。套接字通過通常和同一個域中的套接字交換數(shù)據(jù)(數(shù)據(jù)交換也可能穿越域的界限,但這時一定要執(zhí)行某種解釋程序)。套接字可以根據(jù)通信性質(zhì)分類,這種性質(zhì)對于用戶時可見的.應(yīng)用程序一般僅在同一類的套接字間通信.不過只要底層的通信協(xié)議允許,不同類型的套接字間也照樣可以通信。進(jìn)入九十年代后,隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展,很多數(shù)據(jù)處理系統(tǒng)都采用開放系統(tǒng)結(jié)構(gòu)的客戶機(jī)/服務(wù)器網(wǎng)絡(luò)模式,即客戶機(jī)提出任務(wù)請求,通過網(wǎng)絡(luò)發(fā)送給服務(wù)器,由服務(wù)器做相應(yīng)處理,執(zhí)行被請求的任務(wù),然后將結(jié)果返回給客戶機(jī)。7網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)例如:銀行ATM的前置機(jī)和數(shù)據(jù)處理的主機(jī)之間即構(gòu)成客戶機(jī)/服務(wù)器網(wǎng)絡(luò)模式;電話銀行的前置機(jī)和銀行數(shù)據(jù)處理機(jī)之間也構(gòu)成這種網(wǎng)絡(luò)模式結(jié)構(gòu)等。這樣,如何在前置機(jī)和數(shù)據(jù)主機(jī)之間進(jìn)行信息交換,即進(jìn)程網(wǎng)絡(luò)通信,就成為實(shí)現(xiàn)這種網(wǎng)絡(luò)模式的基礎(chǔ)。而TCP/IP的套接字技術(shù)是解這一問題的有力工具。它從提出時就一直發(fā)揮著愈來愈重要的作用,并已成為UNIX操作系統(tǒng)下TCP/IP網(wǎng)絡(luò)編程標(biāo)準(zhǔn);甚至WINDOW、JAVA都配有它的通用接口。有了這個強(qiáng)有力的工具,我們可以實(shí)現(xiàn)異種機(jī)、異種操作系統(tǒng)應(yīng)用程序間的相互連接和通信。套接字是支持TCP/IP協(xié)議的網(wǎng)絡(luò)通信的基本操作單元??梢詫⑻捉幼挚醋鞑煌鳈C(jī)間的進(jìn)程進(jìn)行雙向通信的端點(diǎn)。它構(gòu)成了在單個主機(jī)內(nèi)及整個網(wǎng)際間的編程界面。一般來說,跨機(jī)應(yīng)用進(jìn)程之間要在網(wǎng)絡(luò)環(huán)境下進(jìn)行通信,必須要在網(wǎng)絡(luò)的每一端都要建立一個套接字,讀、寫、關(guān)閉的方式。2.4開發(fā)工具與運(yùn)行環(huán)境本實(shí)驗(yàn)的主要開發(fā)工具是Eclipse,Eclipse是開放源代碼的項(xiàng)目,可以在網(wǎng)上免費(fèi)下載Eclipse的最新版本,一般Eclipse提供幾個下載版本:Release,StableBuild,IntegrationBuild和NightlyBuild。Eclipse本身是用Java語言編寫,但下載的壓縮包中并不包含Java運(yùn)行環(huán)境,需要用戶自己另行安裝JRE,并且要在操作系統(tǒng)的環(huán)境變量中指明JRE中bin的路徑。2.5其他技術(shù)諸如Web服務(wù)器、數(shù)據(jù)庫服務(wù)器、文件服務(wù)器或郵件服務(wù)器之類的許多服務(wù)器應(yīng)用程序都面向處理來自某些遠(yuǎn)程來源的大量短小的任務(wù)。請求以某種方式到達(dá)服務(wù)器,這種方式可能是通過網(wǎng)絡(luò)協(xié)議(例如或POP)、通過JMS隊(duì)列或者可能通過輪詢數(shù)據(jù)庫。不管請求如何到達(dá),服務(wù)器應(yīng)用程序中經(jīng)常出現(xiàn)的情況是:單個任務(wù)處理的時間很短而請求的數(shù)目卻是巨大的。構(gòu)建服務(wù)器應(yīng)用程序的一個過于簡單的模型應(yīng)該是:每當(dāng)一個請求到達(dá)就創(chuàng)建一個新線程,然后在新線程中為請求服務(wù)。實(shí)際上,對于原型開發(fā)這種方法工作得很好,但如果試圖部署以這種方式運(yùn)行的服務(wù)器應(yīng)用程序,那么這種方法的嚴(yán)重不足就很明顯。每個請求對應(yīng)一個線程(thread-per-request)方法的不足之一是:為每個請求創(chuàng)建一個新線程的開銷很大;為每個請求創(chuàng)建新線程的服務(wù)器在創(chuàng)建和銷毀線程上花費(fèi)的時間和消耗的系統(tǒng)資源要比花在處理實(shí)際的用戶請8網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)求的時間和資源更多。除了創(chuàng)建和銷毀線程的開銷之外,活動的線程也消耗系統(tǒng)資源。在一個JVM里創(chuàng)建太多的線程可能會導(dǎo)致系統(tǒng)由于過度消耗內(nèi)存而用完內(nèi)存或“切換過度”。為了防止資源不足,服務(wù)器應(yīng)用程序需要一些辦法來限制任何給定時刻處理的請求數(shù)目。線程池為線程生命周期開銷問題和資源不足問題提供了解決方案。通過對多個任務(wù)重用線程,線程創(chuàng)建的開銷被分?jǐn)偟搅硕鄠€任務(wù)上。其好處是,因?yàn)樵谡埱蟮竭_(dá)時線程已經(jīng)存在,所以無意中也消除了線程創(chuàng)建所帶來的延遲。這樣,就可以立即為請求服務(wù),使應(yīng)用程序響應(yīng)更快。而且,通過適當(dāng)?shù)卣{(diào)整線程池中的線程數(shù)目,也就是當(dāng)請求的數(shù)目超過某個閾值時,就強(qiáng)制其它任何新到的請求一直等待,直到獲得一個線程來處理為止,從而可以防止資源不足。9網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)33.1可行性分析代生活的需要。網(wǎng)上聊天系統(tǒng)作為一種方便人們之間聯(lián)系的使用系統(tǒng)便應(yīng)運(yùn)而聊天系統(tǒng)的管理,可以達(dá)到增進(jìn)人與人之間的交流和溝通。在Internet上,qq,MSN,飛信等網(wǎng)上軟件,極大程度方便了各地友人之間在局域網(wǎng)里,雖然可以通過文件共享的方式進(jìn)行通訊嗎,但單單使用這種方式,是不方便的。首先在局域網(wǎng)里的網(wǎng)上鄰居,只能看到機(jī)器名,不清楚對方是誰,便,也能解決一部分問題。但是有服務(wù)器通訊的軟件,有著不可比擬的優(yōu)勢;可可以保存用戶的個人信息或介紹,供人查看。而且,不適用服務(wù)器的通訊軟件,大地方便。3.2需求分析以與特定的用戶聊天。自己的聊天對象。用戶沒有專業(yè)的計(jì)算機(jī)知識,所以需要一個友好簡單的界面。方式,如網(wǎng)絡(luò)視頻,音頻聊天等。要求可靠性高,能在由于系統(tǒng)問題或其它原因10網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)產(chǎn)生錯誤后,作出相對應(yīng)處理,比如網(wǎng)絡(luò)初始化失敗、服務(wù)器不在線等,可以提示用戶安全退出本程序,在出現(xiàn)不可知的錯誤以后,可以盡量安全的退出程序。在程序的設(shè)計(jì)過程中,要求能盡可能多的設(shè)想到用戶使用過程中可能發(fā)生的事以更好的完善本軟件的功能,更方便于在工作中的應(yīng)用。3.3系統(tǒng)總體設(shè)計(jì)根據(jù)網(wǎng)絡(luò)應(yīng)用程序的特點(diǎn),網(wǎng)絡(luò)在線聊天系統(tǒng)應(yīng)就有即時,快速的特點(diǎn)。服務(wù)快速地檢查是否能夠連接到服務(wù)器端。能正確的獲得和反映當(dāng)前好友在線情況。據(jù),并能將處理結(jié)果反映給用戶。服務(wù)器端能夠正確地、無沖突地啟動服務(wù)器。好友。正確地斷開與服務(wù)器端地的連接。11網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)3.3.1系統(tǒng)架構(gòu)模型主界面是一個選擇可以選擇進(jìn)入私聊模塊還是群聊模塊。3.3.2功能模塊設(shè)計(jì)登陸模塊,需要完成登陸界面,和登陸會話的維持。注冊模塊,需要完成向數(shù)據(jù)庫插入用戶數(shù)據(jù)然后進(jìn)行重復(fù)性檢查。私聊模塊,構(gòu)建兩個套接字的連接方式,完成單獨(dú)的連接。接字當(dāng)中。3.3.3系統(tǒng)通信設(shè)計(jì)客戶端主要通過套接字請求發(fā)送對方的ID給服務(wù)器,服務(wù)器在數(shù)據(jù)庫當(dāng)中g(shù)et12網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)userid”給服務(wù)器,并且?guī)仙矸蒡?yàn)證,也就是密碼的加密信息給服務(wù)器,服務(wù)器進(jìn)行驗(yàn)證以后就可以在數(shù)據(jù)庫當(dāng)中查找到對應(yīng)的客戶信心并且把a(bǔ)的信息a端到端上可以起到加密的作用。最后聊天的內(nèi)容按照自定義的格式,以0xEEFF開頭然后緊跟一個時間戳,表示消息發(fā)送的時間。3.3.4數(shù)據(jù)庫設(shè)計(jì)表3.1user的結(jié)構(gòu)是否否否表3.2message的結(jié)構(gòu)是是是13網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)44.1服務(wù)器端設(shè)計(jì)與實(shí)現(xiàn)圖圖的。14網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)4.1.1服務(wù)器等待連接進(jìn)程/線程設(shè)計(jì)圖新進(jìn)行監(jiān)聽,從而到達(dá)并發(fā)處理請求的目的。服務(wù)器端(Server)是指在網(wǎng)絡(luò)編程功能。服務(wù)器端的編程步驟和客戶端不同,是由四個步驟實(shí)現(xiàn),服務(wù)器端屬于端程序運(yùn)行的本地計(jì)算機(jī)的IP地址就是服務(wù)器端程序的IP的信息,例如客戶端IP地址等等,服務(wù)器端和客戶端也通過該連接進(jìn)行數(shù)據(jù)交換。一般在服務(wù)器端編程中,當(dāng)獲得連接時,需要開啟專門的線程處理該連接,處理,再把處理以后的結(jié)果數(shù)據(jù)發(fā)送給客戶端。簡單來說,就是先接收再發(fā)送,行的。在數(shù)據(jù)交換完成以后,關(guān)閉和客戶端的連接。這就是服務(wù)器端編程的模型,只是TCP方式是需要建立連接的,對于服務(wù)器端的壓力比較大,而UDP是不需要建立連接的,對于服務(wù)器端的壓力比較小罷了。15網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)4.1.2服務(wù)器處理客戶端信息進(jìn)程/線程設(shè)計(jì)一臺物理機(jī)器上可以更加充分的利用機(jī)器的資源。單線程多進(jìn)程的設(shè)計(jì),個人認(rèn)為更能發(fā)揮多核的優(yōu)勢。這是因?yàn)闆]有了鎖,沒有利用多核計(jì)算的優(yōu)勢,不妨考慮以下的例子:計(jì)算a/b+c/d+e/f,如果我們在一個進(jìn)程中開三條線程利用三個核同時計(jì)算a/bc/de/f固然不錯,但它增加了程序設(shè)計(jì)的復(fù)雜度。而換個思路,做成三個進(jìn)程,第一個只算a/b把結(jié)果交給第二個進(jìn)程去算c/d于之的和,再交個第三個進(jìn)程算e/f加了。因?yàn)樵谒隳炒蔚腶/b的時候,前一次的c/d可能在另一個核中并行計(jì)算著。4.2客戶端設(shè)計(jì)與實(shí)現(xiàn)4.2.1登陸模塊獲取用戶名,用戶選擇的頭像,服務(wù)器的IP地址和端口號的信息;確認(rèn)登陸后初始化,創(chuàng)建套接字,連接服務(wù)器,向服務(wù)器發(fā)送用戶登陸初始化過程中顯示在線好友,并且對用戶的好友上、下線進(jìn)行管理。4.2.2主界面模塊模塊進(jìn)行處理。4.1一旦端口有數(shù)據(jù)來到,就會觸發(fā)CMainSocket對象的CMainSocket::OnReceive()16網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)函數(shù)。OnReceive()函數(shù)中調(diào)用的Receive()函數(shù)就可以得到端口進(jìn)來的以Message結(jié)構(gòu)體封裝的消息。再將Message的內(nèi)容作為WM_RECEIVEMESSAGE的WPARAMWM_RECEIVEMESSAGE為自定義的消息,CMyQQClientDlg的OnReceiveMessage()為此消息對應(yīng)的消息處理函數(shù)。OnReceiveMessage()函數(shù)處理從wParam參數(shù)中傳送來的以Message結(jié)構(gòu)體封裝OnReceiveMessage()函數(shù)進(jìn)行分解,各模塊只針對自己的部分進(jìn)行處理。圖管理模塊的功能實(shí)現(xiàn)最主要由CLoginLoad、CMyQQClientDlg兩個類來實(shí)現(xiàn)。在下文介紹具體功能時,會對兩個對話框控件進(jìn)行分析。17網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)圖CLoginLoad:CLoginLoad是用戶登陸的對話框,基于CDialog類。CloginLoad的登錄對話框的界面如圖4-3選擇的頭像等信息,并且填寫服務(wù)器IP與端口號。此對話框主要有兩個按鈕,按鈕退出程序。圖CMyQQClientDlgCMyQQClientDlg是用戶登陸后顯示好友列表的對話框,基于CDialog類,CMyQQClientDlg也是本程序最核心的對話框。此對話框只響應(yīng)用戶雙擊圖標(biāo)的事件,雙擊后,創(chuàng)建聊天對話框,然后開始進(jìn)行聊天。18網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)CMyQQClientDlg對話框的界面如圖4.7所示。圖4.2.3私聊模塊發(fā)送信息模塊聊天模塊中,發(fā)送信息模塊的實(shí)現(xiàn)過程有下面幾個步驟:用戶選擇一個好友為聊天對象;(2)識別是否已經(jīng)與此好友處于聊天狀態(tài)(有對應(yīng)的聊天對話框打開),已話框;用戶按下發(fā)送按鈕后,將聊天內(nèi)容發(fā)送出去(服務(wù)器接收);在本地即時聊天內(nèi)容顯示的編輯框中添加發(fā)送的內(nèi)容。2.接收信息模塊聊天模塊中,接收信息模塊的實(shí)現(xiàn)過程有下面幾個步驟:判斷接收到信息的類型,是否為好友發(fā)來信息;(2)若該好友第一次發(fā)送信息(沒有與此好友聊天的對話框),提示用戶有新的消息;(3)用戶按下查看消息的提示后,創(chuàng)建新的對話框,加到對話框鏈表中并顯示該對話框,如果已經(jīng)和此好友處于聊天狀態(tài),直接將對應(yīng)對話框調(diào)到前臺;在對應(yīng)的對話框中顯示傳遞過來的消息。19網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)圖聊天模塊主要由CChatDialog、CChatAction兩個類來實(shí)現(xiàn)。CChatDialog:CChatDialog是與好友進(jìn)行聊天的對話框,基于CDialog類。CChatDialog共有兩個Button控件和兩個RichEditRichEdit用于顯RichEditRichEdit的內(nèi)容在聊天記錄的管理模塊中詳述。CChatDialog的界面如圖4.8所示。CChatAction:CChatAction是用于提醒用戶有新消息的提示對話框,基于CDialog類。CChatAction有一個StaticText控件和一個Button按鈕。StaticText的靜態(tài)文本框用于顯示“您有一條新消息,請注意查收”的提示信息。Butoon用于響應(yīng)用戶查看新消息的事件。CChatAction的界面如圖4.9所示。圖基于CSocket類的CMainSocket類中,定義了類型為CObArray的m_ChatDlgs成員變量,m_ChatDlgs對所有創(chuàng)建好的聊天對話框進(jìn)行了管理。是本論文設(shè)計(jì)的聊天程序中應(yīng)用到的核心的技術(shù)。聊天事件的產(chǎn)生有兩種可能性,受請求。兩種事件中,無論是哪種形式,只要聊天事件開始,程序就為用戶創(chuàng)建一個新的類型為CChatDialog的聊天對話框,對話框以m_ClientName和m_UserName為標(biāo)識因?yàn)榱奶焓录莾煞街g的對話,只要雙方都確定下來了,就能確定此聊天事件。再將新建的聊天對話框加入到鏈表中。對于信息的傳送,聊天記錄的查看等過程中,都需要對m_ChatDlgs的鏈表進(jìn)行操作。m_ChatDlgs與CChatDialog的關(guān)系如圖4.10所示。在CMainSocket類中,改寫了CSocket的OnReceive()函數(shù),一旦有消息進(jìn)入端口,就會觸發(fā)OnReceive()函數(shù),在OnReceive()內(nèi)部調(diào)用Receive()函數(shù),就得到了信息的內(nèi)容。之后可以對消息進(jìn)行一系列的處理。20網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)本設(shè)計(jì)中自定義了WM_RECEIVEMESSAGE的消息,作為端口得到消息的提示,用SendMessage()將WM_RECEIVEMESSAGE消息發(fā)送出,并在程序中添加對應(yīng)得消息響應(yīng)函數(shù),來處理端口得到的消息。消息隨著WM_RECEIVEMESSAGE的WPARAM流動。圖與發(fā)送信息的主要流程如圖4.11所示。圖4.2.4聊天記錄管理模塊聊天記錄管理模塊的實(shí)現(xiàn)過程有下面幾個步驟:用戶請求查看聊天記錄,向服務(wù)器發(fā)送請求;聊天記錄;顯示聊天記錄;如果用戶按下保存聊天記錄按鈕,則保存聊天記錄。用戶在進(jìn)行聊天的過程中,可能會按下“查看聊天記錄”的按鈕,聊天只關(guān)系到用戶雙方,默認(rèn)為用戶想查看的聊天記錄為自己和正在對話的另一方的內(nèi)21網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)件的。聊天記錄管理模塊流程圖如圖4.12所示。圖聊天記錄管理模塊中最主要涉及到一個類CReadSession求查看聊天記錄后,用于顯示聊天記錄的對話框。該對話框基于CDialog類。主要有一個Button控件,用于保存聊天記錄。該對話框如圖4-12所示。圖22網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)55.1軟件測試概述軟件測試是這樣的一個過程,它執(zhí)行一個程序或一個系統(tǒng),目的是發(fā)現(xiàn)錯誤?;蛘?,它包括這樣一些活動,只要這些活動是評價一個程序(或系統(tǒng))的屬性和能力、以決定程序或系統(tǒng)是否滿足了要求。軟件和物理加工不一樣,物理加工接受了輸入,就產(chǎn)生輸出。軟件不一樣的地方在于它的失效方式不同。絕大部分物理系統(tǒng)以固定(通常比較少)的方式失效。然而,軟件卻有多種奇異的失效方式。檢測所有的失效模式,通常是行不通的。和大多數(shù)物理系統(tǒng)不同,軟件中的大部分缺陷是設(shè)計(jì)的錯誤,不是制造上的缺陷。軟件不會用壞,也不會磨損—一般地說,若不升級和退市,它就不會改變。bug就會埋入到軟件之中并一直留在那里,直到有一天它會被觸發(fā)而發(fā)作。在一個中等大小的軟件模塊里,軟件的bugs幾乎總是存在的。這不是因?yàn)槌绦騿T的粗心和不負(fù)責(zé)任,而是因?yàn)檐浖膹?fù)雜性通常是不可處理的,人管理復(fù)雜性的能力是有限的。還有一點(diǎn),對應(yīng)復(fù)雜系統(tǒng),設(shè)計(jì)的缺陷是不可能根除的。同樣由于復(fù)雜性,發(fā)現(xiàn)軟件中設(shè)計(jì)的缺陷也是很困難的。因?yàn)檐浖腿魏螖?shù)字系統(tǒng)不是連續(xù)的,測試邊界值對保證其正確性是不夠的。所有可能的值都需要測試和驗(yàn)證,但是完全的測試是不可行的。對于一個簡單不過的小程序,兩個32位的整數(shù)相加,會有2的64次方個測試用例,即使每秒鐘測試幾千個用例,完全測試這個小程序也需要幾百年。很顯然,對于一個實(shí)際的軟件模塊,其復(fù)雜性遠(yuǎn)遠(yuǎn)超過剛才舉的那個例子。如果輸入來自真實(shí)世界,問題將變得更加糟糕,因?yàn)闀r間和不可預(yù)測的環(huán)境因素,以及人的交互,都有可能被考慮成為輸入?yún)?shù)。程序的動態(tài)性使問題更加復(fù)雜。如果在初步測試中發(fā)現(xiàn)了一個失效,給代碼做了修改,軟件可能現(xiàn)在通過了一個原來不能通過的測試用例。但是原來通過的測試用例現(xiàn)在不能再保證通過了??紤]到這種可能性,測試應(yīng)該重新開始??蓽y試的費(fèi)用成本可是有限制的。5.2測試策略與結(jié)果分析針對本軟件項(xiàng)目制定測試計(jì)劃。1.登陸功能編號1編號楊穎or許野or4王元杰23網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)非127.0.0.1and非服務(wù)器主機(jī)IP地址8單機(jī)取消按鈕測試用例輸入昵稱:楊穎輸入服務(wù)器單擊確定按鈕昵稱:輸入昵稱:輸入服務(wù)器單擊確定按鈕服務(wù)器IP:服務(wù)器失127.0.0.1單擊確定次?輸入服務(wù)器單擊確定按鈕輸入昵稱:楊穎輸入服務(wù)器服務(wù)器IP:界面127.0.0.1單擊取消按鈕輸入服務(wù)器單擊取消按鈕2.選擇聊天方式編號有效等價類選擇私聊編號選擇聊天124網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)方式2選擇群聊預(yù)期輸出3無操作測試用例選擇私聊選擇成功跳轉(zhuǎn)至私選擇群聊選擇成功跳轉(zhuǎn)至群無操作依舊停留3在主界面3.選擇聊天對象編號編號312直接在輸入框打字測試用例選擇某一選擇成功用戶用戶跳轉(zhuǎn)至該用戶私聊在公屏上依舊停留3在上一界面無操作4.開始聊天輸入條件輸入信息編號1編號發(fā)送按鈕測試用例2點(diǎn)擊發(fā)送按鈕4未按下發(fā)送按鈕用例覆蓋輸入等價25網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)信息:123信息123發(fā)輸入信息:123信息:空發(fā)送失敗未單擊按鈕3,4
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 煤礦機(jī)電設(shè)備管理系統(tǒng)技術(shù)方案
- 績效發(fā)展咨詢服務(wù)
- 展會服務(wù)合同范本在線看
- 拼花地板購銷合同樣本
- 個人工作承諾
- 社區(qū)安寧餐飲業(yè)靜音承諾
- 馬戲團(tuán)表演安全保障服務(wù)協(xié)議
- 終止協(xié)議合同的操作
- 版評審表采購合同
- 機(jī)電工程招標(biāo)文件解讀與指導(dǎo)
- 部編版歷史九年級上冊第六單元 第17課君主立憲制的英國【課件】y
- 2024年《建筑設(shè)備安裝》復(fù)習(xí)考試題庫及答案(含各題型)
- 2024政府采購評審專家考試題庫附含答案
- 2022年內(nèi)蒙古導(dǎo)游資格考試(含各科)題庫(含答案和必背題)
- 道路清掃環(huán)衛(wèi)報價方案
- 第24課《穿井得一人》公開課一等獎創(chuàng)新教學(xué)設(shè)計(jì) 統(tǒng)編版語文七年級上冊
- 廣告創(chuàng)意與品牌宣傳考核試卷
- 提高吸入劑使用正確率品管圈成果匯報
- 《2025年日歷》電子版模板年歷月歷工作學(xué)習(xí)計(jì)劃橫版 日歷計(jì)劃
- 2023年EHS工作年度總結(jié)及2024年工作展望(新版)
- 食品風(fēng)味研究專題智慧樹知到期末考試答案章節(jié)答案2024年中國農(nóng)業(yè)大學(xué)
評論
0/150
提交評論