版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p> 局域網(wǎng)聊天工具設(shè)計1</p><p> ——文本聊天、語音聊天、好友列表及用戶信息管理1</p><p> LAN Chat Tool Design2</p><p> ——Text chat, file transfer and user ma
2、nagement2</p><p><b> 第1章 引言3</b></p><p> 1.1 系統(tǒng)開發(fā)的背景3</p><p> 1.2 聊天工具開發(fā)的目標3</p><p> 1.3 聊天工具開發(fā)的現(xiàn)實意義3</p><p> 第2章 開發(fā)平臺與相關(guān)知識簡介5</p
3、><p> 2.1 系統(tǒng)綜合要求5</p><p> 2.1.1 硬件要求:5</p><p> 2.1.2 程序運行環(huán)境:5</p><p> 2.2 C# 簡介5</p><p> 2.3 MicroSoft .NET Framework 簡介5</p><p> 2.4
4、Microsoft DirectX SDK 簡介6</p><p> 2.5 .NET 與多線程技術(shù)6</p><p> 2.6 C/S結(jié)構(gòu)與WINDOWS SOCKETS網(wǎng)絡(luò)編程6</p><p> 2.7 XML簡介9</p><p> 第3章 需求分析10</p><p> 3.1 用戶需求
5、10</p><p> 3.2 系統(tǒng)功能需求10</p><p> 3.3 性能要求10</p><p> 3.4 測試環(huán)境規(guī)定11</p><p> 3.5 可行性研究11</p><p> 第4章 系統(tǒng)設(shè)計12</p><p> 4.1 系統(tǒng)目標12</p>
6、;<p> 4.2 系統(tǒng)功能結(jié)構(gòu)12</p><p> 4.3 業(yè)務(wù)流程圖13</p><p> 4.4 系統(tǒng)模塊劃分13</p><p> 第5章 系統(tǒng)模塊詳細設(shè)計14</p><p> 5.1 文本聊天模塊實現(xiàn)14</p><p> 5.1.1 文本聊天模塊概述14</p
7、><p> 5.1.2 文本聊天服務(wù)器工作原理14</p><p> 5.1.3 文本聊天客戶端工作原理15</p><p> 5.1.4 P2P文本聊天16</p><p> 5.2 語音聊天模塊實現(xiàn)19</p><p> 5.2.1 文件傳輸模塊概述19</p><p>
8、5.2.2 文件傳輸接收端工作原理19</p><p> 5.2.3 文件傳輸發(fā)送端工作原理20</p><p> 5.2.4 P2P語音聊天21</p><p> 5.3 用戶管理模塊實現(xiàn)24</p><p> 5.3.1 用戶管理模塊概述24</p><p> 5.3.2 用戶數(shù)據(jù)模型24&l
9、t;/p><p> 5.3.3 XML文檔結(jié)構(gòu)設(shè)計25</p><p> 5.3.4 用戶信息的保存25</p><p> 5.3.5 用戶數(shù)據(jù)的遍歷26</p><p> 第6章 系統(tǒng)測試28</p><p> 6.1 系統(tǒng)測試概述28</p><p> 6.2 白盒測試2
10、8</p><p> 6.2.1 測試環(huán)境配置28</p><p> 6.2.2 正確性測試28</p><p> 6.3 黑盒測試29</p><p> 6.3.1 測試環(huán)境配置29</p><p> 6.3.2 功能性測試29</p><p> 6.3.3 容錯性測試
11、29</p><p> 6.3.4 性能與效率測試30</p><p> 6.3.5 易用性測試31</p><p> 6.3.6 文檔測試31</p><p> 第7章 主要問題及解決32</p><p> 7.1 多線程問題32</p><p> 7.2 套接字異常3
12、2</p><p> 7.3 網(wǎng)絡(luò)流異常32</p><p><b> 參考文獻33</b></p><p><b> 附錄34</b></p><p><b> 局域網(wǎng)聊天工具設(shè)計</b></p><p> ——文本聊天、語音聊天、好友
13、列表及用戶信息管理</p><p> 摘要:隨著計算機網(wǎng)絡(luò)技術(shù)的發(fā)展,各種各樣基于網(wǎng)絡(luò)的應(yīng)用也隨之誕生,比如基于互聯(lián)網(wǎng)的信息發(fā)布,通信,數(shù)據(jù)共享等等。局域網(wǎng)的發(fā)展也同樣迅速。很多政府機構(gòu),企業(yè),學校,都是先以一個統(tǒng)一的局域網(wǎng)聯(lián)結(jié)在一起,再分別接入INTERNET。因此基于局域網(wǎng)的即時通信工具,就這樣應(yīng)運而生了。本文提出了一個局域網(wǎng)聊天工具的設(shè)計,并在WINDOWS平臺上加以了實現(xiàn)。本設(shè)計將語音聊天、文本聊天和文
14、件傳輸?shù)裙δ芫C合在一個客戶端程序之內(nèi),使用C#語言進行網(wǎng)絡(luò)編程,用多線程實現(xiàn)不同的并行任務(wù),使用可擴展標記語言xml進行簡單的數(shù)據(jù)存儲和管理,并進行了人性化的界面設(shè)計,使用起來簡單方便,并且功能十分合理,又易于擴展以及個性化定制。</p><p> 關(guān)鍵詞:局域網(wǎng);文本聊天;可擴展標記語言;多線程</p><p> LAN Chat Tool Design</p><
15、;p> ——Text chat, file transfer and user management</p><p> Abstract:Along with the high-speed development of the computer network technology, various of applications which are based on network were born
16、, such as Internet-based information releasing,communications,data sharing and so on. The development of LAN is the same fast. Because of Some government institutions, enterprises and schools constitute a LAN first ,then
17、 join into INTERNET, the real-time LAN-based communication tools emerged. this paper proposed a LAN chat tool designing, and then impleme</p><p> Key words: LAN; text-chat; file-transfer; xml; multi-threade
18、d</p><p><b> 第1章 引言</b></p><p> 1.1 系統(tǒng)開發(fā)的背景</p><p> 當今世界正處于信息時代,計算機和通信網(wǎng)絡(luò)是這一時代所謂“信息基礎(chǔ)設(shè)施”。隨著網(wǎng)絡(luò)的普及化,網(wǎng)絡(luò)作為人們相互間溝通與交流聯(lián)系的現(xiàn)代化工具日益重要,可以說現(xiàn)在人們的生活已經(jīng)離不開網(wǎng)絡(luò)。在現(xiàn)實生活中人們可以通過多種手段與家人親戚朋友交
19、流通訊,像電話,電子郵件等。但這些手段都有些缺點,要么費用太高,要么實時性不強,要么1次只能和1位好友進行交流。于是這就需要1種便宜,快速,能同時與多個好友進行通訊的網(wǎng)絡(luò)工具的出現(xiàn),而網(wǎng)絡(luò)聊天工具就滿足了這些需求,填補了這個空白。</p><p> 在互聯(lián)網(wǎng)相當普及的今天,在互聯(lián)網(wǎng)上聊天對很多“網(wǎng)蟲”來說已經(jīng)是家常便飯了。聊天室程序可以說是網(wǎng)上最簡單的多點通信程序。一個簡單的聊天室, 從程序員的觀點來看就是在多
20、個I/O端點之間實現(xiàn)多對多的通信。</p><p> 廣域網(wǎng)上的即時通信工具,如今一般采用UDP或者 TCP協(xié)議體系來實現(xiàn),開發(fā)技術(shù)已經(jīng)比較成熟,這些軟件,在使用方面各有特色,在實現(xiàn)方面也各有所長,但基于這些產(chǎn)品正在商業(yè)運營階段,其實現(xiàn)方式屬于商業(yè)機密,具體細節(jié)不可能得知,但是它在大的方面無非就是利用各種平臺上的網(wǎng)絡(luò)通信接口,建構(gòu)基于TCP/IP,或者UDP協(xié)議的軟件產(chǎn)品。</p><p&g
21、t; 網(wǎng)絡(luò)的飛速發(fā)展使網(wǎng)絡(luò)應(yīng)用程序的開發(fā)地位顯的越來越重要,而網(wǎng)絡(luò)應(yīng)用程序的開發(fā)和傳統(tǒng)應(yīng)用程序的開發(fā)在思想和實現(xiàn)上有很大的區(qū)別,隨著網(wǎng)絡(luò)技術(shù)和數(shù)據(jù)庫管理系統(tǒng)的發(fā)展,C/S體系結(jié)構(gòu)在軟件的開發(fā)中越來越流行。因為這種結(jié)構(gòu)的應(yīng)用軟件可以充分發(fā)揮網(wǎng)絡(luò)的作用和數(shù)據(jù)庫系統(tǒng)的優(yōu)勢,以滿足人們各種應(yīng)用的需求。</p><p> 1.2 聊天工具開發(fā)的目標</p><p> 本設(shè)計的主要工作是設(shè)計一個
22、基于WINDOWS平臺的局域網(wǎng)即時聊天工具,具體是采用P2P模式實現(xiàn)用戶之間的通信,然后闡述本軟件的功能、特點及使用方法,并詳細闡述開發(fā)本軟件所用的相關(guān)技術(shù),具體分析本軟件的各個模塊的功能及實現(xiàn)方法,說明本軟件的設(shè)計思想及方法。</p><p> 1.3 聊天工具開發(fā)的現(xiàn)實意義</p><p> 局域網(wǎng)聊天工具,是在局域網(wǎng)內(nèi)部使用的,用戶之間用來交流的一個工具,一般都具有文本聊天和文件
23、傳輸功能。局域網(wǎng)聊天軟件因其使用簡單,系統(tǒng)資源消耗少等優(yōu)點,成為各企事業(yè)單位等的局域網(wǎng)內(nèi)廣泛應(yīng)用的軟件之一。</p><p> 當前的局域網(wǎng)聊天工具有很多,最有名的算IPMSG(飛鴿傳書)。Ipmsg能夠?qū)崿F(xiàn)局域網(wǎng)內(nèi)消息、文件傳遞。但是,ipmsg 在某些時候,在同一vlan下的用戶,能夠彼此看見對方,卻不能通信,因為其采用的是udp協(xié)議作為消息傳遞協(xié)議,而這種傳輸是不穩(wěn)定的,所以有時候能看到對方的用戶之間不能
24、實現(xiàn)互相通信,怎么辦呢?一種解決方法就是,采用tcp協(xié)議,面向連接的傳輸層協(xié)議作為消息傳遞協(xié)議,開發(fā)出相應(yīng)的網(wǎng)絡(luò)應(yīng)用程序就能夠?qū)崿F(xiàn)彼此連接的雙方進行信息的傳遞。</p><p> 隨著互聯(lián)網(wǎng)的不斷發(fā)展,“互聯(lián)網(wǎng)要擔當起通訊大任”的聲音不絕于耳。未來的電信業(yè)務(wù)將呈現(xiàn)多元化格局。同樣是話音業(yè)務(wù),可能是PSTN網(wǎng)絡(luò)(傳統(tǒng)電話網(wǎng))提供的,可能是Internet提供的,還可能是有線電視網(wǎng)絡(luò),甚至電力網(wǎng)、煤氣管道網(wǎng)提供的。
25、而用戶的選擇也將包括電腦與電腦、電腦與電話、電話與電話、電話與(智能)手機等通話方式。這一切,都是以IP為基礎(chǔ)的通訊網(wǎng)絡(luò),而非傳統(tǒng)通訊模式的電信服務(wù)。所以,VOIP將是聊天工具的一個發(fā)展方向。</p><p> 現(xiàn)有的局域網(wǎng)聊天工具,一般都不具備語音聊天的功能,本軟件集成了語音聊天模塊,用戶可以通過此軟件實現(xiàn)語音互通,提高局域網(wǎng)用戶之間信息傳遞效率以及交流質(zhì)量。通過開發(fā)本軟件,可以了解當前流行的voip技術(shù),練
26、習socket編程,擴展知識面,鍛煉編程的能力等,所以極具研究價值。</p><p> 第2章 開發(fā)平臺與相關(guān)知識簡介</p><p> 2.1 系統(tǒng)綜合要求</p><p> 2.1.1 硬件要求:</p><p> PC機:2臺或者2臺以上,RAM256MB以上,CPU400MHZ以上,硬盤40GB以上、耳麥各2副</p&g
27、t;<p><b> 局域網(wǎng)</b></p><p> 2.1.2 程序運行環(huán)境:</p><p> 系統(tǒng)開發(fā)平臺:Microsoft Visual Strdio 2008</p><p> Microsoft DirectX SDK (November 2008)</p><p><b>
28、; 系統(tǒng)開發(fā)語言:C#</b></p><p> 運行平臺:Window2000,Windows Xp,Windows Server 2003</p><p> 運行環(huán)境:Microsoft .Net Freamwork 2.0</p><p> 分辨率:最佳效果 1024×768</p><p><b&g
29、t; 2.2 C# 簡介</b></p><p> C#(發(fā)音為C Sharp)是由微軟公司所開發(fā)的一種面向?qū)ο?,且運行于.NET Framework之上的高級程序設(shè)計語言。</p><p> C#的設(shè)計目的是簡化網(wǎng)絡(luò)應(yīng)用。使用C#語言能夠迅速地架構(gòu)基于Windows和Internet的應(yīng)用程序和組件,如標準的Windows應(yīng)用程序和控制臺應(yīng)用程序,編譯后生成的文件擴展名
30、為EXE;程序庫應(yīng)用程序,編譯后生成的文件擴展名為DLL,主要用來共享程序代碼。</p><p> 2.3 MicroSoft .NET Framework 簡介</p><p> .NET Framework 是由微軟開發(fā),一個致力于敏捷軟件開發(fā)(Agile software development)、快速應(yīng)用開發(fā)(Rapid application development)、平臺無
31、關(guān)性和網(wǎng)絡(luò)透明化的軟件開發(fā)平臺。.NET是微軟為下一個十年對服務(wù)器和桌上型軟件工程邁出的第一步。NET 包含許多有助于Internet和Intranet應(yīng)用迅捷開發(fā)的技術(shù)。</p><p> .NET 也為編程界面(API)提供了新功能和開發(fā)工具。這些革新使得程序設(shè)計員可以同時進行Windows應(yīng)用軟件和網(wǎng)絡(luò)應(yīng)用軟件以及元件和服務(wù)(web service)的開發(fā)。.NET 提供了一個新的反射性的且面向?qū)ο蟪绦蛟O(shè)
32、計編程界面。.NET 設(shè)計得足夠通用化從而使許多不同高級語言都得以被匯集。</p><p> 2.4 Microsoft DirectX SDK 簡介</p><p> SDK 是 Software Development Kit 的縮寫,中文意思就是“軟件開發(fā)工具包”。這是一個覆蓋面相當廣泛的名詞,可以這么說:輔助開發(fā)某一類軟件的相關(guān)文檔、范例和工具的集合都可以叫做 “SDK”。具體
33、到我們這個系列教程,我們后面只討論廣義 SDK 的一個子集——即開發(fā) Windows 平臺下的應(yīng)用程序所使用的 SDK。</p><p> SDK提供了一整套開發(fā) Windows 應(yīng)用程序所需的相關(guān)文件、范例和工具的“工具包”。</p><p> 由于SDK 包含了使用 API的必需資料,所以人們也常把僅使用 API 來編寫 Windows 應(yīng)用程序的開發(fā)方式叫做“SDK 編程”。而
34、API 和 SDK 是開發(fā) Windows 應(yīng)用程序所必需的東西,所以其它編程框架和類庫都是建立在它們之上的,比如 VCL 和 MFC,雖然他們比起“SDK 編程”來有著更高的抽象度,但這絲毫不妨礙它們在需要的時候隨時直接調(diào)用 API 函數(shù)。</p><p> 2.5 .NET 與多線程技術(shù)</p><p> 多線程是為了使得多個線程并行的工作以完成多項任務(wù),以提高系統(tǒng)的效率。線程是在
35、同一時間需要完成多項任務(wù)的時候被實現(xiàn)的。</p><p> 在本質(zhì)上和結(jié)構(gòu)來說,.NET是一個多線程的環(huán)境。有兩種主要的多線程方法是.NET所提倡的:使用ThreadStart來開始你自己的進程,直接的 (使用ThreadPool.QueueUserWorkItem)或者間接的(比如Stream.BeginRead,或者調(diào)用 BeginInvoke)使用ThreadPool類。線程的基類是System.Thre
36、ading。所有線程通過CLI來進行管理。</p><p> 2.6 C/S結(jié)構(gòu)與WINDOWS SOCKETS網(wǎng)絡(luò)編程</p><p> 通常的通信工具,都采用客戶機/服務(wù)器(C/S)體系結(jié)構(gòu),C/S結(jié)構(gòu)是這樣的一種結(jié)構(gòu):它包括一個客戶機(或前端),一個服務(wù)器(或稱后端),客戶機的作用是訪問和處理遠程服務(wù)器上的數(shù)據(jù),服務(wù)器的作用是接收和處理客戶機的數(shù)據(jù)請求。有時,可能有多個客戶向同一
37、個服務(wù)器同時請求服務(wù),這就需要服務(wù)器決定怎樣處理這些請求。Client/Server結(jié)構(gòu)是當前數(shù)據(jù)庫應(yīng)用程序中極為流行的一種方式。尤其是網(wǎng)絡(luò)技術(shù)的發(fā)展,使得當前很多系統(tǒng)都采用這種方式進行構(gòu)造,其最大的優(yōu)點是將計算機工作任務(wù)分別由客戶端和服務(wù)器端來共同完成,這樣有利于充分合理的利用系統(tǒng)資源。另外它的服務(wù)器端還可以將信息集中起來,任何客戶機都可以通過訪問服務(wù)器而獲得所需的信息。Client/Server模型最終可歸結(jié)為一種“請求/應(yīng)答”關(guān)系
38、。一個請求總是首先被客戶發(fā)出,然后服務(wù)器總是被動地接收請求,返回客戶需要的結(jié)果。在客戶發(fā)出一個請求之前,服務(wù)進程一直處于休眠狀態(tài)。一個客戶提出請求后,服務(wù)進程被“喚醒”并且為客戶提供服務(wù),對客戶的請求做出所需要的應(yīng)答,如圖2-1所示。</p><p> 圖2-1 客戶機/服務(wù)器通信結(jié)構(gòu)示圖</p><p> 為了方便Client/Server模型的網(wǎng)絡(luò)編程,90年代初,由Microso
39、ft聯(lián)合了其他幾家公司共同制定了一套WINDOWS下的網(wǎng)絡(luò)編程接口,即Windows Sockets規(guī)范,它不是一種網(wǎng)絡(luò)協(xié)議,而是一套開放的、支持多種協(xié)議的Windows下的網(wǎng)絡(luò)編程接口?,F(xiàn)在的Winsock已經(jīng)基本上實現(xiàn)了與協(xié)議無關(guān),你可以使用Winsock來調(diào)用多種協(xié)議的功能,但較常使用的是TCP/IP協(xié)議。</p><p> 在IP連接領(lǐng)域有兩種通信類型:面向連接的(Connection-oriented
40、 ) 和無連接的(Connectionless)。在面向連接的套接字中,使用TCP協(xié)議來建立兩個IP地址端點之間的會話。一旦建立了這種連接,就可以在設(shè)備之間可靠地傳輸數(shù)據(jù)。為了建立面向連接的套接字,服務(wù)器端和客戶端必須分別進行編程。</p><p> 在System.Net.Sockets 名空間下,有兩個專門用于TCP協(xié)議編程的類:TcpClient類和TcpListener類。這兩個類提供了直觀的易于使用的
41、屬性和方法,從而降低了TCP協(xié)議編程的難度。一般情況下,使用TcpClient連接、發(fā)送和接收數(shù)據(jù),使用TcpListener監(jiān)聽是否有傳入的連接請求,使用Close()方法釋放與TcpClient關(guān)聯(lián)的所有資源。</p><p> C/S 模式下Windows socket編程示意圖,如圖2-2所示。</p><p> 圖2-2 C/S 模式下socket編程</p>
42、<p> 具體到這個項目,服務(wù)器只是用來驗證用戶的登錄,以及廣播用戶的登錄狀態(tài)等。具體的通信,采用P2P模式,每兩個客戶端要進行連接通信時都直接連通而不用通過服務(wù)器來進行信息的中轉(zhuǎn),這樣設(shè)計的優(yōu)點是既可以對用戶進行管理,又不會造成服務(wù)器的通信負擔。所以,系統(tǒng)結(jié)構(gòu)將設(shè)計成如圖2-3的方式。</p><p> 圖2-3 客戶機直接通信結(jié)構(gòu)示圖</p><p><b>
43、 2.7 XML簡介</b></p><p> XML(Extensible Markup Language)即可擴展標記語言,它與HTML一樣,都是SGML(Standard Generalized Markup Language,標準通用標記語言)。Xml是Internet環(huán)境中跨平臺的,依賴于內(nèi)容的技術(shù),是當前處理結(jié)構(gòu)化文檔信息的有力工具。擴展標記語言XML是一種簡單的數(shù)據(jù)存儲語言,使用一系列
44、簡單的標記描述數(shù)據(jù),而這些標記可以用方便的方式建立,雖然XML占用的空間比二進制數(shù)據(jù)要占用更多的空間,但XML極其簡單易于掌握和使用。 XML與Access,Oracle和SQL Server等數(shù)據(jù)庫不同,數(shù)據(jù)庫提供了更強有力的數(shù)據(jù)存儲和分析能力,例如:數(shù)據(jù)索引、排序、查找、相關(guān)一致性等,XML僅僅是展示數(shù)據(jù)。事實上XML與其他數(shù)據(jù)表現(xiàn)形式最大的不同是:他極其簡單。這是一個看上去有點瑣細的優(yōu)點,但正是這點使XML與眾不同。 <
45、/p><p> XML的簡單使其易于在任何應(yīng)用程序中讀寫數(shù)據(jù),這使XML很快成為數(shù)據(jù)交換的唯一公共語言,雖然不同的應(yīng)用軟件也支持其它的數(shù)據(jù)交換格式,但不久之后他們都將支持XML,那就意味著程序可以更容易的與Windows、Mac OS, Linux以及其他平臺下產(chǎn)生的信息結(jié)合,然后可以很容易加載XML數(shù)據(jù)到程序中并分析他,并以XML格式輸出結(jié)果。</p><p> XML的主要作用有:&l
46、t;/p><p> (1)豐富文件(Rich Documents)- 自定文件描述并使其更豐富 </p><p> (2)屬于文件為主的XML技術(shù)應(yīng)用 </p><p> (3)標記是用來定義一塊數(shù)據(jù)應(yīng)該如何呈現(xiàn) (4)解釋數(shù)據(jù)(Metadata)- 描述其它文件或在線信息 (5)屬于數(shù)據(jù)為主的XML技術(shù)應(yīng)用 (6)標記是用來說明一塊資料的意義 (
47、7)組態(tài)檔案(Configuration Files)- 描述軟件的組態(tài)參數(shù)</p><p><b> 第3章 需求分析</b></p><p><b> 3.1 用戶需求</b></p><p> 隨著中小型企事業(yè)的不斷發(fā)展,在企業(yè)內(nèi)部實現(xiàn)局域網(wǎng)通信是必不可少的。局域聊工具就是一個非常好的局域網(wǎng)通信軟件,它可以在職
48、工不移動位置的情況下進行在線聊天、文件傳遞、語音聊天。這樣,可以大大提高企業(yè)的工作效率,便于企業(yè)內(nèi)部職員的交流。根據(jù)用戶對聊天工具的要求,可分為以下幾點:</p><p> 操作簡單方便、界面簡潔美觀。</p><p> 客戶端能夠注冊新用戶</p><p> 可以在局域網(wǎng)實現(xiàn)文字和文件的傳輸</p><p> 可以進行聊天記錄保存&
49、lt;/p><p> 可以實現(xiàn)局域網(wǎng)語音聊天</p><p> 系統(tǒng)運行穩(wěn)定、安全可靠</p><p> 3.2 系統(tǒng)功能需求</p><p> 這個程序要實現(xiàn)的功能如下:</p><p> 程序啟動之后就能看到當前哪些機器在線,哪些可以與之進行對等通信。</p><p> 一旦有某個網(wǎng)
50、內(nèi)的機器上線了,要有即時通知,并能及時更新用戶界面中的用戶列表。</p><p> (3)當雙擊某個列表項的時候,要彈出聊天對話框,可以在其中編輯要發(fā)送的聊天信息,并進行發(fā)送。</p><p> (4)聊天界面要人性化,下面是發(fā)送框,上面有已有聊天記錄,并借助滾動條看到當次所有的聊天記錄。</p><p> 當有遠程用戶向本機發(fā)送文件的時候,要彈出一個消息提示
51、框,提示本機用戶,可以選擇接收或者拒絕。</p><p> 當用戶覺得有必要保存聊天記錄時,提供一個簡單的聊天記錄保存功能。</p><p> 文件傳輸過程中,應(yīng)該有當前傳輸狀態(tài)提示,并能夠?qū)鬏敽臅r等進行計算,作為當前網(wǎng)絡(luò)狀態(tài)的一種反饋。</p><p><b> 3.3 性能要求</b></p><p> 首
52、先要求程序要完全可靠,可以應(yīng)付各種由于系統(tǒng)問題產(chǎn)生的錯誤,比如初始網(wǎng)絡(luò)失敗,對方突然下線等。要求提前設(shè)想到類似的盡可能多的可能發(fā)生的事件,做出相應(yīng)的應(yīng)對措施,并向用戶提交簡單易懂清晰明白的提示信息。</p><p> 程序要有良好的容錯性,當用戶進行非法操作時或者系統(tǒng)本身出現(xiàn)問題時要能以最好的方式退出程序,避免發(fā)生程序假死現(xiàn)象。</p><p> 開發(fā)文檔要有好的易理解性,如果系統(tǒng)又要
53、交由別人接手開發(fā),或者自己由于種種原因需要進行二次開發(fā),那么要保證以后能夠清晰的理解整個系統(tǒng)的設(shè)計思路以及實現(xiàn)細節(jié)。</p><p> 要求程序?qū)λ\行之系統(tǒng)的硬件條件要求盡可能低,運行時內(nèi)存占用盡可能小,響應(yīng)速度要盡可能快。并且不發(fā)生內(nèi)存泄漏之類影響系統(tǒng)運行的錯誤事件。并且要求易于維護及擴展。所以應(yīng)該采用模塊化開發(fā),各個模塊之間不要有太多的耦合,以免維護困難。</p><p> 3.
54、4 測試環(huán)境規(guī)定</p><p> 在開發(fā)過程中由開發(fā)人員自己,也就是我和搭檔莫景順隨時進行內(nèi)部部分白盒測試,在開發(fā)完成以后,自己進行一個全面的白盒測試,然后請同學幫忙進行黑盒測試。</p><p><b> 3.5 可行性研究</b></p><p> ?。?)成本可行性分析</p><p> 本軟件只做開發(fā)學習
55、使用,所以暫且不考慮經(jīng)濟成本及盈利問題。</p><p> ?。?)技術(shù)可行性分析</p><p> 開發(fā)所需要的軟硬件平臺已經(jīng)搭建好,并進行了合理而完善的需求分析,做好了充分的前期準備工作,其次因為本程序的平臺將基于WINDOWS,將要使用網(wǎng)絡(luò)通信技術(shù),而WINDOWS有完善成熟的網(wǎng)絡(luò)通信接口,以及與C#開發(fā)環(huán)境的嚴密契合能力,加之相類似的更大規(guī)模的INTERNET通信工具產(chǎn)品也已有例
56、在先,所以這個程序的開發(fā)在技術(shù)上是完全可行的。</p><p><b> 第4章 系統(tǒng)設(shè)計</b></p><p><b> 4.1 系統(tǒng)目標</b></p><p> 根據(jù)用戶對聊天系統(tǒng)的要求,本聊天軟件可以實現(xiàn)以下目標:</p><p><b> (1)用戶管理</b&g
57、t;</p><p><b> (2)登錄</b></p><p> (3)當有用戶登錄時會在客戶端在線用戶中添加顯示出來</p><p> (4)當有用戶下線時會從客戶端在線用戶中刪除其信息</p><p> (5)實現(xiàn)客戶端間的文本聊天</p><p> (6)實現(xiàn)客戶端間的語音聊天
58、</p><p> (7)實現(xiàn)客戶端間的文件傳輸</p><p> (8)實現(xiàn)聊天記錄的保存</p><p> 4.2 系統(tǒng)功能結(jié)構(gòu)</p><p> 本系統(tǒng)中主要包括兩個部分:服務(wù)器端和客戶端。</p><p> 服務(wù)器端的功能包括:驗證客戶注冊、添加新用戶、驗證客戶登錄、廣播登錄用戶信息、廣播下線用戶信息
59、。</p><p> 客戶端的功能包括:注冊新用戶、用戶登錄、文本聊天、語音聊天、文件傳輸。</p><p> 客戶端功能結(jié)構(gòu)如圖4-1所示。</p><p> 圖4-1 客戶端功能結(jié)構(gòu)</p><p><b> 4.3 業(yè)務(wù)流程圖</b></p><p> 局域網(wǎng)聊天系統(tǒng)的業(yè)務(wù)流程圖如
60、圖4-2所示。</p><p> 圖4-2 系統(tǒng)業(yè)務(wù)流程圖</p><p> 4.4 系統(tǒng)模塊劃分</p><p> 由圖4-1我們可以看出系統(tǒng)主要分為服務(wù)器端和客戶端兩大部分,經(jīng)過商討,我們決定把系統(tǒng)分為六個模塊:服務(wù)器模塊、客戶端模塊、語音聊天模塊、文本聊天模塊、文件傳輸模塊、用戶管理模塊。</p><p> 此系統(tǒng)由2個成員共同
61、完成,各成員分工情況如表4-1所示。</p><p> 表4-1小組成員分工情況表</p><p> 第5章 系統(tǒng)模塊詳細設(shè)計</p><p> 在本次開發(fā)過程中,我主要負責文本聊天、文件傳輸和用戶管理模塊的設(shè)計和實現(xiàn),現(xiàn)詳細地介紹這三個模塊的實現(xiàn)。</p><p> 5.1 文本聊天模塊實現(xiàn)</p><p>
62、; 5.1.1 文本聊天模塊概述</p><p> 凡是聊天工具,都少不了文本聊天功能,這是個基礎(chǔ)功能。通過文本聊天,局域網(wǎng)內(nèi)用戶能夠發(fā)送和接收文字信息,并在程序窗體上顯示出來,相互之間進行在線交流,并能根據(jù)用戶需要,對聊天記錄進行簡單的保存。文本聊天的信息傳輸協(xié)議主要有面向連接的TCP和無連接的UDP。TCP協(xié)議是互聯(lián)網(wǎng)中最重的協(xié)議之一,主要特點是:保證數(shù)據(jù)包的準確到達;保證各數(shù)據(jù)包到達的順序和數(shù)據(jù)包發(fā)出的
63、順序相同。UDP協(xié)議提供了快速但不一定可靠的傳輸服務(wù),UDP協(xié)議采用無連接的套接字,不需要在網(wǎng)絡(luò)設(shè)備之間發(fā)送連接信息,和TCP相比,UDP缺乏雙方的握手信號,因此不保證數(shù)據(jù)包一定到達目的地,可靠性不如TCP,而且,由于UDP沒有任何對雙方會話的支持,不能保證各數(shù)據(jù)包到達的順序與數(shù)據(jù)包發(fā)出的順序相同。所以,在文本聊天模塊中,采用TCP協(xié)議來傳輸文本信息。</p><p> 5.1.2 文本聊天服務(wù)器工作原理<
64、;/p><p> 開啟服務(wù)器,文本聊天窗體加載成功后,將啟動監(jiān)聽線程,服務(wù)器主要是負責監(jiān)聽局域網(wǎng)內(nèi)的用戶的連接請求。收到客戶發(fā)起的連接請求后,若服務(wù)器處于空閑狀態(tài),彈出消息提示框,對請求進行處理,服務(wù)器可以選擇接受或者拒絕客戶端的連接。若同意連接,則返回給客戶端同意信號,開啟服務(wù)器的接收信息線程,并置消息發(fā)送事件為Enable??蛻舳耸盏椒?wù)器返回的同意信號后,也開啟接收信息線程,并置消息發(fā)送事件為Enable。通
65、信雙方就可以進行文字聊天了。若服務(wù)器端拒絕客戶端的連接,則關(guān)閉tcpconnect,并關(guān)閉網(wǎng)絡(luò)流,繼續(xù)執(zhí)行監(jiān)聽。客戶端得知服務(wù)器端關(guān)閉tcpconnect并關(guān)閉網(wǎng)絡(luò)流之后,則釋放本次socket和網(wǎng)絡(luò)流。若已建立連接,當斷開連接時,將向?qū)Ψ桨l(fā)送斷開信號,然后將釋放Socket和網(wǎng)絡(luò)流,不影響到下一次連接的接入。文本聊天服務(wù)器工作流程如圖5-1所示。</p><p> 圖5-1文本聊天服務(wù)器程序流程圖</p
66、><p> 5.1.3 文本聊天客戶端工作原理</p><p> 客戶端用來向服務(wù)器端發(fā)起一個連接,等待服務(wù)器的允許接入確認。若服務(wù)器端同意連接請求,接收到服務(wù)器的同意連接信號后,開啟接收信息線程,并置消息發(fā)送事件為Enable,通信雙方就可以進行文本聊天了。若服務(wù)器端拒絕連接,則釋放Socket連接并關(guān)閉網(wǎng)絡(luò)流。若已建立連接,當斷開連接時,將向?qū)Ψ桨l(fā)送斷開信號,然后將釋放Socket和網(wǎng)
67、絡(luò)流,不影響到下一次連接的發(fā)起。文本聊天客戶端工作流程圖如圖5-2所示。</p><p> 圖5-2 文本聊天客戶端程序流程圖</p><p> 5.1.4 P2P文本聊天</p><p><b> 1) 功能概述</b></p><p> 將文本聊天客戶端和服務(wù)器模塊,通過多線程技術(shù),集成在一個聊天窗體里面,窗
68、體加載時進行監(jiān)聽,有連接請求到達,則為服務(wù)器端;試圖連接遠程用戶,則為客戶端。它是建立在TcpListener以及TcpClient這兩個類基礎(chǔ)上的。程序?qū)崿F(xiàn)的原理也比較簡單,但是用到了P2P技術(shù)"非中心化"的基本原則。簡言之,用這個程序可以在網(wǎng)絡(luò)中發(fā)送、接受消息,任何一臺計算機既可以作為服務(wù)器端,又可以作為客戶端。</p><p> 2) 集成文本聊天工作流程圖</p>&l
69、t;p> 集成主窗體創(chuàng)建后,加載監(jiān)聽線程。當有接入連接請求,同意或拒絕接入請求,若同意,則按照文本聊天服務(wù)器模塊工作流程執(zhí)行。當無接入請求,則判斷是否有嘗試連接遠程服務(wù)端事件,若有,則按照文本聊天客戶端模塊工作流程執(zhí)行,如圖5-3所示。</p><p> 圖5-3 P2P文本聊天程序流程圖</p><p> 3) 集成主窗體設(shè)計</p><p> 主窗
70、體是用來與用戶交互用的,所以加載時間不能太長,響應(yīng)速度應(yīng)足夠快,操作簡單,設(shè)計人性化。所以,設(shè)計的時候,采用了一些通俗易懂的圖片和按鈕。文本輸入框設(shè)計了Alt+S和Ctrl+Enter熱鍵功能,方便用戶快速的發(fā)送消息。當用戶未輸入文字而嘗試發(fā)送時,彈出消息提示框,提示不能發(fā)送空信息,節(jié)省系統(tǒng)和網(wǎng)絡(luò)資源。主窗體界面如圖5-4所示。</p><p> 圖5-4 集成主窗體界面</p><p>
71、; 文本聊天窗體主要控件屬性,見表5-1。</p><p> 表5-1 文本聊天窗體主要控件屬性表</p><p><b> 4) 具體實現(xiàn)</b></p><p><b> 1、定義相關(guān)變量。</b></p><p> 2、集成主窗體創(chuàng)建后,創(chuàng)建一個tcpListener的對象,端口為5
72、000,IP為任意。創(chuàng)建監(jiān)聽線程wait,wait線程執(zhí)行的是waitconn()方法,啟動監(jiān)聽線程。調(diào)用getMyIP()方法用于獲取本地IP地址,并在連接建立時傳給對方。當wait線程監(jiān)聽到遠程用戶的接入連接請求,彈出消息提示框,用戶可以選擇同意或拒絕接入請求。若同意,則創(chuàng)建接收信息線程th,并啟動th。若用戶拒絕遠程接入請求,則關(guān)閉網(wǎng)絡(luò)流nss,關(guān)閉tcps,并調(diào)用disconnect()重新初始化相關(guān)變量。</p>
73、<p> 3、接收信息時,嘗試讀取網(wǎng)絡(luò)流,采用的是Unicode編碼。讀取到的消息如果不為斷開連接信號,則在聊天記錄框里面顯示出來;若為斷開信號,則執(zhí)行disconnect()方法關(guān)閉當前連接。</p><p> 4、當無接入請求,則判斷用戶是否有嘗試連接遠程服務(wù)端事件。若有,創(chuàng)建TcpClient的對象tcpc,并嘗試連接遠程主機。</p><p> 5、連接建立后,用
74、戶單擊“發(fā)送消息”按鈕或者在輸入文本框內(nèi)按熱鍵“Alt+S”或“Ctrl+Enter”,觸發(fā)send_Click 事件。send_Click事件主要是將用戶的輸入通過Socket,采用網(wǎng)絡(luò)流的形式傳輸給遠程用戶,編碼采用Unicode,同時在聊天記錄框里面顯示出來。</p><p> 6、斷開連接或關(guān)閉窗體,需要將Socket、網(wǎng)絡(luò)流以及接收信息線程th進行關(guān)閉,重置各按鈕的可用狀態(tài)。若是關(guān)閉窗體,還需將wai
75、t線程關(guān)閉。</p><p> 5.2 文件傳輸模塊實現(xiàn)</p><p> 5.2.1 文件傳輸模塊概述</p><p> 除了文本聊天以外,局域網(wǎng)內(nèi)另外一個應(yīng)用是文件的共享。通過文件共享,企業(yè)能提高信息交換的速度,從而提高工作效率。文件共享的實現(xiàn)離不開文件傳輸。由于TCP協(xié)議能保證數(shù)據(jù)包的準確到達以及各數(shù)據(jù)包到達的順序和數(shù)據(jù)包發(fā)出的順序相同,出于可靠性和效率
76、考慮,本模塊也采用TCP協(xié)議來進行用戶之間文件的傳輸。</p><p> 5.2.2 文件傳輸接收端工作原理</p><p> 開啟窗體后,接收端執(zhí)行監(jiān)聽線程。當接收到客戶發(fā)起的文件傳入請求后,彈出消息提示對話框,提示用戶對請求進行處理,同意或者拒絕接收。若同意接收,則彈出文件保存對話框,用戶選擇文件保存路徑并確認后,發(fā)送接收信號給文件發(fā)送端,啟動計時器開始接收文件流,將遠程文件保存在
77、本地,并在文件傳輸過程中對文件傳輸狀態(tài)進行反饋,文件接收完畢后,關(guān)閉計時器,關(guān)閉文件流,并在狀態(tài)欄上顯示出完畢狀態(tài)。若拒絕接收,則向發(fā)送端返回拒絕信號,繼續(xù)執(zhí)行監(jiān)聽線程,等待下一次的文件傳入請求。文件傳輸接收端工作流程圖如圖5-5所示。</p><p> 圖5-5 文件傳輸接收端程序流程圖</p><p> 5.2.3 文件傳輸發(fā)送端工作原理</p><p>
78、 開啟窗體后,發(fā)送端選擇用戶需要發(fā)送的文件,向接收端發(fā)起的文件傳輸請求,若接收端端同意接收,開啟計時器,將本地文件通過網(wǎng)絡(luò)發(fā)送給接收端,并在文件傳輸過程中對文件傳輸狀態(tài)進行反饋,文件發(fā)送完畢,關(guān)閉計時器,關(guān)閉文件流,并在狀態(tài)欄上顯示出完畢狀態(tài)。若接收端拒絕接受文件,則取消本次文件發(fā)送,等待用戶的下一次文件發(fā)送事件。文件傳輸發(fā)送端工作流程圖如圖5-6所示。</p><p> 圖5-6 文件傳輸發(fā)送端程序流程圖&l
79、t;/p><p> 5.2.4 P2P文件傳輸</p><p><b> 1) 功能概述</b></p><p> 將文件發(fā)送端和接收端模塊,通過多線程技術(shù),集成在聊天窗體里面,窗體加載時進行監(jiān)聽,有文件傳輸請求到達,則為接收端,執(zhí)行接收端工作流程;若試圖發(fā)送文件到遠程用戶,則為發(fā)送端,執(zhí)行發(fā)送端工作流程。這樣就實現(xiàn)了P2P模式對等傳輸。&l
80、t;/p><p> 2) P2P文件傳輸工作流程圖</p><p> 負責接收文件的監(jiān)聽線程集成在聊天窗體內(nèi),當聊天窗體加載時,將開啟此線程。當有文件傳入請求,用戶可以同意或者拒絕接收,若同意接收,則按照文件傳輸接收端模塊工作流程執(zhí)行。若在聊天窗體生存周期內(nèi),無接入連接請求,則判斷是否有用戶嘗試發(fā)送文件事件,若有,則按照文件傳輸發(fā)送端模塊工作流程執(zhí)行。P2P文件傳輸工作流程圖如圖5-7所示
81、。</p><p> 圖5-7 P2P文件傳輸程序流程圖</p><p> 3) 文件傳輸發(fā)送端窗體</p><p> 文件發(fā)送主要作用是發(fā)送本地文件至遠程接收端,所以功能盡可能簡單化,方便用戶操作,設(shè)計人性化。設(shè)計的時候,采用了一些簡單按鈕,布局也和常用的窗體類似。為方便用戶快速的選取發(fā)送文件,所以文件路徑選擇框支持拖拽功能。當用戶未選取文件前,開始按鈕不可
82、用,當用戶輸入的文件不存在時,彈出消息提示框,提示文件不存在錯誤。文件接收功能集成在聊天窗體內(nèi),文件發(fā)送窗體界面如圖5-8所示。</p><p> 圖5-8 文件發(fā)送窗體界面</p><p> 文件傳輸窗體主要控件屬性見表5-2。</p><p> 表5-2 文件傳輸窗體主要控件屬性</p><p><b> 4)具體實現(xiàn)&
83、lt;/b></p><p><b> 1、定義相關(guān)變量。</b></p><p> 2、主窗體加載時,創(chuàng)建文件接收監(jiān)聽線程ReceiverWorker,并啟動ReceiverWorker線程。ReceiverWorker線程執(zhí)行的是ReceiverStart()方法。在ReceiverStart()中,創(chuàng)建一個TcpListener的實例tcpListen
84、er,其監(jiān)聽局域網(wǎng)內(nèi)的任意IP地址在8088端口號上是否有傳入的連接嘗試。</p><p> 3、當ReceiverWorker線程監(jiān)聽到遠程用戶的文件傳入請求,彈出消息提示框,用戶可以選擇同意或拒絕文件傳入請求。若同意,用戶選擇文件保存路徑后,向發(fā)起方發(fā)送同意接受信號,并開啟計時器,讀取傳入的文件流并將其保存到本地文件,文件接收完畢時關(guān)閉計時器。若用戶拒絕文件傳入,則向遠程主機發(fā)送一個拒絕信號。最后,執(zhí)行關(guān)閉
85、BinaryReader,關(guān)閉Socket等操作。</p><p> 4、當用戶打開文件發(fā)送窗體,主窗體調(diào)用其帶ip參數(shù)的構(gòu)造方法,實參為當前與之建立連接的遠程主機的ip地址,用于發(fā)送文件時建立socket連接使用。</p><p> 5、當用戶向txtFile文本框內(nèi)輸入所選取的待發(fā)送文件后,用戶單擊“開始”按鈕,開啟用于向遠端發(fā)送文件的SenderWorker線程。SenderWo
86、rker線程執(zhí)行SenderStart()方法。SenderStart()方法將創(chuàng)建一個TcpClient的實例tcpClient,嘗試連接指定的ip地址的8088端口,將文件的信息發(fā)送給遠程主機并等待遠程主機的確認。若接收方同意接收文件,則啟動計時器并打開BinaryWriter,將本地文件發(fā)送給遠程主機,文件傳輸完畢時關(guān)閉計時器。若遠程主機拒絕接收,則關(guān)閉此次socket連接,等待下一次文件發(fā)送事件的觸發(fā)。</p>&
87、lt;p> 5.3 用戶管理模塊實現(xiàn)</p><p> 5.3.1 用戶管理模塊概述</p><p> 不管是任何系統(tǒng),都必然會有用戶這個角色,因此用戶管理是每一個應(yīng)用中必不可少的部分。由于企業(yè)內(nèi)部的信息越來越私密,企業(yè)只希望員工通過內(nèi)部局域網(wǎng)進行溝通與交流,所以在本局域網(wǎng)聊天工具中,設(shè)計一個簡單用戶管理模塊,對接入服務(wù)器的用戶進行管理,能在一定程度上解決安全性問題。本模塊實現(xiàn)
88、采用了xml技術(shù),二次開發(fā)時,通過一定的修改,能夠很好的移植到數(shù)據(jù)庫上。</p><p> 5.3.2 用戶數(shù)據(jù)模型</p><p> 本模塊實現(xiàn)一個簡單的用戶管理,所管理的目標是局域網(wǎng)內(nèi)客戶端用戶。模塊中只涉及到用戶一個模型,涉及到的屬性項目有 "用戶ID"、"用戶名(姓名)"、"密碼"、"注冊時間"等,
89、其E-R圖如圖5-9所示。</p><p> 圖5-9 用戶信息E-R圖</p><p> 5.3.3 XML文檔結(jié)構(gòu)設(shè)計</p><p> XML分為文件序言(Prolog)和文件主體兩個大的部分。在此文件中的第一行即是文件序言。它主要是告訴XML 解析器如何工作。其中,version 是標明此 XML 文件所用的標準的版本號1.0,encoding 指明了
90、此XML 文件中所使用的字符類型為utf-8。文件的其余部分都是屬于文件主體,userInfos.xml文件的內(nèi)容信息存放在此。文件主體是由開始的<userInfosList>和結(jié)束的</userInfosList>控制標記組成,這個稱XML文件的“根元素”;<user>是作為直屬于根元素下的“子元素”;在<user>下又有<userName>、<userPwd>
91、;、<datesInsert>這些子元素。id是<user>元素中的一個“屬性”,“1001”、“1002”等則是“屬性值”。userInfos.xml文檔結(jié)構(gòu)如圖5-10所示。</p><p> 圖5-10 userInfos.xml文檔結(jié)構(gòu)圖</p><p> 5.3.4 用戶信息的保存</p><p> 通過服務(wù)器監(jiān)聽,接收到客戶
92、端的注冊請求后,獲取注冊用戶的信息,判斷用戶是否為第一個注冊用戶,若是,則創(chuàng)建userInfos.xml文檔,進而創(chuàng)建userInfoList根節(jié)點,在userInfoList內(nèi)創(chuàng)建用戶user節(jié)點,設(shè)置id屬性,然后在user節(jié)點下創(chuàng)建用戶名、密碼、創(chuàng)建時間等節(jié)點,將相應(yīng)的信息保存到各節(jié)點中。若userInfos.xml已存在,遍歷userInfoList,查找該注冊用戶名在userInfos.xml中是否已存在。若用戶名不存在,則在
93、userInfoList內(nèi)創(chuàng)建新的user節(jié)點,然后在user節(jié)點下創(chuàng)建用戶名、密碼、創(chuàng)建時間等,將用戶信息添加進userInfos.xml文檔中。若用戶名已被注冊,則通過服務(wù)器向客戶端返回用戶名已經(jīng)被注冊的提示信息。保存數(shù)據(jù)的流程圖如圖5-11所示。</p><p> 圖5-11 保存數(shù)據(jù)的程序流程圖</p><p> 5.3.5 用戶數(shù)據(jù)的遍歷</p><p&g
94、t; 在新用戶注冊或者已注冊用戶登錄時,需要在userInfos.xml文檔中查找用戶名是否存在,這個就涉及到xml文件的遍歷。遍歷xml文件的主要流程是,先進入<userInfoList>根節(jié)點,開始對<user>節(jié)點進行遍歷。若<user>節(jié)點不存在,則返回不存在信息,結(jié)束遍歷;否則進入<user>節(jié)點,對其子節(jié)點<userName>進行對比。若匹配成功,則返回用戶名存在
95、信息;若不匹配,則繼續(xù)遍歷下一個<user>節(jié)點。工作流程圖如圖5-12所示。</p><p> 圖5-12 用戶數(shù)據(jù)的遍歷程序流程圖</p><p><b> 第6章 系統(tǒng)測試</b></p><p> 6.1 系統(tǒng)測試概述</p><p> 測試的目的是為了發(fā)現(xiàn)功能是否達到,或者是否有更多的缺陷!
96、</p><p> 這里的缺陷是泛稱的,它可以指功能的錯誤,也可以指性能低下,易用性差等。測試總是先假設(shè)程序中存在缺陷,再通過執(zhí)行程序來發(fā)現(xiàn)并最終改正缺陷。理解測試的目的是個很重要的意識問題。如果說測試的目的是為了說明程序中沒有缺陷,那么測試人員就會向這個目標靠攏,因而下意識地選用一些不易暴露錯誤的測試示例。這樣的測試是虛假的。</p><p> 測試只能證明缺陷存在,而不能證明缺陷不
97、存在。</p><p> 這個真理告訴我們,對于一個復(fù)雜的系統(tǒng)而言,無論采取什么樣的測試手段都不能證明缺陷已經(jīng)不復(fù)存在?!皬氐椎販y試”只是一種理想。在實踐中,測試要考慮時間、費用等限制,不允許無休止地測試。</p><p> 測試有助于提高軟件的質(zhì)量,但是提高軟件的質(zhì)量不能依賴于測試。</p><p> 因為做為一個本科畢業(yè)設(shè)計,本系統(tǒng)并不會真正發(fā)布到廣大的用
98、戶群中去,所以只能做α測試,而無法完成β測試。</p><p> 關(guān)于測試人員的安排,由我本人和莫景順一起做白盒測試,由同學幫助做黑盒測試。</p><p><b> 6.2 白盒測試</b></p><p> 6.2.1 測試環(huán)境配置</p><p> 白盒測試可在開發(fā)系統(tǒng)的本機上直接進行,所以不需要進行特殊的
99、配置。</p><p> 6.2.2 正確性測試</p><p> 正確性測試檢查軟件的功能是否符合規(guī)格說明。由于正確性是軟件最重要的質(zhì)量因素,所以其測試也最重要。</p><p> 在集成P2P文本聊天時,最開始只能發(fā)起一次連接,通信雙方斷開連接而不退出程序時,再次連接就提示套接字已被占用異常。通過在disconnect時關(guān)閉當前的套接字,使之可以進行多次連
100、接。</p><p> 當兩個客戶端在建立連接時,出現(xiàn)過程序假死異常。分析代碼發(fā)現(xiàn),線程調(diào)度出錯,接收消息線程th還未創(chuàng)建和啟動,監(jiān)聽線程wait已經(jīng)被銷毀了!修改代碼,給出兩種解決辦法:1、在th線程的執(zhí)行方法中,將wait線程銷毀;在th線程銷毀前,重新開啟wait線程。2、wait線程不銷毀。設(shè)置一bool類型變量isconnected,當已經(jīng)建立連接后,isconnected=true,若再有其他的連接
101、請求到達,自動將其他連接請求拒絕。連接斷開后,重置isconnected=false,將處理移交給用戶。我采用了第一種方法,調(diào)試之后,問題解決。</p><p> 在程序退出時,常常發(fā)生錯誤,異常退出,造成表面上看程序已結(jié)束,但卻仍然駐留在內(nèi)存中的現(xiàn)象。經(jīng)過反復(fù)分析代碼,最終確定問題出在程序退出處理流程上,通過修改和調(diào)試,問題解決。</p><p> 整個開發(fā)過程中,共歷經(jīng)200多次相
102、互斷開、連接測試,P2P文本聊天模塊終于可以正常運行。借助在P2P文本聊天模塊開發(fā)過程中積累的經(jīng)驗,較順利的完成了P2P文件傳輸模塊的開發(fā)。通過在總集成后的程序的各個流程中添加消息提示框顯示程序內(nèi)部數(shù)據(jù)、對象的狀態(tài),并插入斷點進行單步跟蹤發(fā)現(xiàn)各模塊工作正常,數(shù)據(jù)也未發(fā)生異?,F(xiàn)象。</p><p><b> 6.3 黑盒測試</b></p><p> 6.3.1 測
103、試環(huán)境配置</p><p> 用兩臺或兩臺以上機器通過交換機等構(gòu)成一個局域網(wǎng),進行正確的網(wǎng)絡(luò)配置,每臺機器上都安裝了WINDOWS操作系統(tǒng)、DirectX SDK 以及.NET 2.0,并安裝了本軟件的正確拷貝。</p><p> 6.3.2 功能性測試</p><p> 先在其中一臺機器A上啟動服務(wù)端軟件,開啟監(jiān)聽服務(wù)。當A機器和B機器啟動了客戶端軟件后,向
104、服務(wù)器進行登錄操作,服務(wù)器端驗證了用戶的登錄后,向局域網(wǎng)廣播客戶端的登錄狀態(tài)。A客戶端收到服務(wù)器發(fā)來的信息后,更新自己的用戶表,然后此時,不管A,B雙方,只要雙擊用戶列表中相應(yīng)的項目,即可啟動發(fā)信對話框,若B當前為空閑狀態(tài),則雙方建立TCP連接,開始進行聊天通信,可以進行信息的輸入與發(fā)送,發(fā)起語聊,傳輸文件等。同時,對方均可進行正確的接收和回復(fù)。所以,功能測試為成功。</p><p> 6.3.3 容錯性測試&
105、lt;/p><p> 容錯性測試是檢查軟件在異常條件下的行為。容錯性好的軟件能確保系統(tǒng)不發(fā)生無法意料的事故。</p><p> 經(jīng)檢查,當用戶輸入無效操作時,系統(tǒng)總是能檢測到無效操作,對用戶進行相應(yīng)的信息反饋,并合理的做出內(nèi)部處理。當系統(tǒng)本身發(fā)生錯誤,比如網(wǎng)絡(luò)初始化失敗,綁定套接字失敗,數(shù)據(jù)讀取失敗等,都會進行相對應(yīng)的正確處理。</p><p> 例如當文件傳輸時
106、,用戶輸入的文件不存在,而單擊“開始”時,會有如圖6-1所示的錯誤提示。</p><p> 圖6-1 用戶操作出錯信息提示示意圖</p><p> 6.3.4 性能與效率測試</p><p> 關(guān)于性能的問題,在語聊時,未對語音輸入設(shè)備采集到的信息進行編碼,緩沖數(shù)也較少,所以當用戶所處環(huán)境較狹小時,回音將產(chǎn)生嘯叫。改用麥克風和耳機之后,一定程度上阻斷回音的影響
107、,通話質(zhì)量基本上能滿足要求。</p><p> 文件傳輸?shù)臅r候,通過對文件長度以及已傳輸信息量的相減運算,顯示出當前傳輸狀態(tài),需要占用較多的系統(tǒng)計算資源和時間,而且傳輸速度相對IPMSG等軟件,慢太多。這個問題,我通過對文件流緩沖的字節(jié)數(shù)進行增大,設(shè)置為8KB后,計算量減少,傳輸速度明顯加快,通過計時器計時,最后得出的傳輸速率與IPMSG相比,大致一樣。因為對于帶寬相對較大,至少都是10Mbps的局域網(wǎng)來說,信
108、息的發(fā)送和接收,在局域網(wǎng)內(nèi)幾乎就是瞬間響應(yīng),造成速度瓶頸的不是網(wǎng)絡(luò)傳輸因素,而是頻繁的對磁盤設(shè)備進行讀寫所致,而傳輸過程中頻繁的計算也是造成系統(tǒng)資源消耗過大的一個原因。通過改進算法后,文件傳輸效率基本上能滿足用戶要求。另外,此設(shè)計中未限制傳輸文件的大小,經(jīng)測試,5GB以上的文件也能夠通過文件傳輸模塊進行傳輸。因此,和其他的類似軟件相比較,有更大的應(yīng)用范圍。</p><p> 6.3.5 易用性測試</p&
109、gt;<p> 易用性測試沒有一個量化的指標,主觀性較強。一般認為,如果一個系統(tǒng)可以讓用戶不查閱手冊即可正確使用其所有功能,那么這個系統(tǒng)就具有良好的易用性。本聊天工具使用過程中提示信息詳細,界面友好,操作簡單,新用戶能夠很快學會使用,所以具有比較好的易用性。</p><p> 6.3.6 文檔測試</p><p> 在本系統(tǒng)的開發(fā)過程中,因為是本科畢業(yè)設(shè)計,所以具有完備
110、的開題報告,文獻綜述,任務(wù)書,以及最終的論文做總結(jié)闡述,整個文檔所以說文檔方面也比較完整。</p><p> 第7章 主要問題及解決</p><p><b> 7.1 多線程問題</b></p><p> 因為本系統(tǒng)的客戶端程序采用P2P模式,每個用戶即可以使服務(wù)的發(fā)起端,又可以使服務(wù)的接收端,所以必須在程序加載時對網(wǎng)絡(luò)進行監(jiān)聽,監(jiān)聽聊天
111、連接請求和文件傳輸連接請求,并能夠?qū)悍桨l(fā)起的事件進行處理,因而必須在此應(yīng)用程序中使用多線程技術(shù),耗時的任務(wù)可以在后臺執(zhí)行,而使應(yīng)用程序窗口和控件保持響應(yīng)。對于應(yīng)用程序監(jiān)聽功能,多線程處理提供了用不同線程處理每個傳入請求的能力。否則,在完全滿足前一個請求之前,將無法處理其他的新的請求。在兩個用戶的通信過程中,任何一方斷開連接之后,要像對方發(fā)送斷開信號,而對方接收到傳入的斷開信號后,需斷開Socket、NetStream 等,并重新開啟監(jiān)
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文---局域網(wǎng)聊天工具的設(shè)計與實現(xiàn)
- 基于.net的局域網(wǎng)聊天工具論文
- 基于.net的局域網(wǎng)聊天工具
- 局域網(wǎng)畢業(yè)論文---局域網(wǎng)聊天軟件
- 局域網(wǎng)聊天軟件畢業(yè)論文
- 局域網(wǎng)聊天軟件-畢業(yè)論文
- java畢業(yè)論文---局域網(wǎng)聊天軟件
- 基于java局域網(wǎng)聊天軟件畢業(yè)論文
- 網(wǎng)絡(luò)聊天工具的設(shè)計與實現(xiàn)畢業(yè)論文
- 局域網(wǎng)聊天系統(tǒng)的設(shè)計與實現(xiàn)-畢業(yè)論文
- 局域網(wǎng)聊天軟件的設(shè)計與實現(xiàn)畢業(yè)論文
- 原創(chuàng)畢業(yè)設(shè)計論文局域網(wǎng)聊天系統(tǒng)
- 畢業(yè)設(shè)計--局域網(wǎng)聊天系統(tǒng)
- java局域網(wǎng)聊天室系統(tǒng)畢業(yè)論文
- 局域網(wǎng)聊天系統(tǒng)畢業(yè)設(shè)計
- 網(wǎng)絡(luò)視頻聊天工具的設(shè)計與實現(xiàn)畢業(yè)論文
- 基于netbios的聊天工具
- mfc小型局域網(wǎng)聊天室的實現(xiàn)畢業(yè)論文
- 畢業(yè)論文 高校局域網(wǎng)聊天室系統(tǒng)的設(shè)計與實現(xiàn)
- 網(wǎng)絡(luò)聊天工具的設(shè)計與實現(xiàn)畢業(yè)設(shè)計
評論
0/150
提交評論