版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 局域網(wǎng)即時(shí)通訊系統(tǒng)的實(shí)現(xiàn)</p><p> LAN instant messaging system is realized</p><p><b> 摘 要</b></p><p> 隨著計(jì)算機(jī)科學(xué)和Internet 的飛速發(fā)展, 網(wǎng)上聊天已成為人們相互交流的一種方式, 與E-mail、電話相比, 聊天服務(wù)更具
2、有實(shí)時(shí)性和有效性。大多數(shù)網(wǎng)絡(luò)通訊都需要借助Internet上的服務(wù)器,這就給那些具有大規(guī)模內(nèi)部網(wǎng)絡(luò)的用戶造成了許多問題,如浪費(fèi)網(wǎng)絡(luò)資源、遭遇到網(wǎng)絡(luò)攻擊、傳播的病毒、破壞防御系統(tǒng)等等。由于互連網(wǎng)上的網(wǎng)絡(luò)通訊工具給企業(yè)內(nèi)部信息交流帶來了不便,所以為了方便內(nèi)部網(wǎng)絡(luò)的用戶之間的溝通,需要開發(fā)一個(gè)基于局域網(wǎng)的信息收發(fā)系統(tǒng)的即時(shí)通訊工具,實(shí)現(xiàn)在內(nèi)部網(wǎng)絡(luò)中進(jìn)行信息的交流。該軟件能夠幫助企業(yè)在局域網(wǎng)內(nèi)搭建起自己的聊天系統(tǒng),避免企業(yè)內(nèi)部員工使用類似QQ等
3、軟件泄露內(nèi)部信息,但是該軟件只實(shí)現(xiàn)了聊天和傳送文件以及抓取屏幕等功能,還有很多不足之處需要改進(jìn)。</p><p> 本文提出一個(gè)運(yùn)行于VC平臺(tái)上的局域網(wǎng)聊天軟件的解決方案。該聊天軟件集服務(wù)器端和客戶端兩個(gè)模塊于一體,可設(shè)置為客戶端或者服務(wù)器端或者兩者兼容等模式,提供TCP/UDP兩種傳輸模式作選擇。服了服務(wù)器模式主要實(shí)現(xiàn)務(wù)器的配置和數(shù)據(jù)的傳遞;客戶端模式主要對(duì)服務(wù)器端進(jìn)行通訊。該軟件采用異步套接字的非阻塞模式,
4、并實(shí)現(xiàn)對(duì)象的序列化和MFC文件對(duì)象實(shí)現(xiàn)數(shù)據(jù)的保存。</p><p> 關(guān)鍵詞:局域網(wǎng) 即時(shí)通信 套接字 異步模式</p><p><b> Abstract</b></p><p> Along with the high-speed development of the computer science and Internet,
5、chatting on line has been an important method in our communication. Comparing with E-mail and telephone, the chat-line service is more real-time and effective. Most network communications require the help of servers on t
6、he Internet, which has caused many problems to the Large-scale internal network users, such as a waste of network resources, network attacks, viruses, damage defense systems and so on. As the interconnect</p>
7、<p> This thesis proposes a solution of a LAN chatting software based on C++ language, which is operated on the VC platform. This chatting software set two modules: the server and the client in one,. which can be
8、set either one or both compatible with TCP/UDP two transport mode choices. The server module mainly completes the sever device’s configuration. The client module was mainly communicate with the server. The software used
9、model of non-blocking asynchronous sockets , And to achieve the object a</p><p> Key words:LAN ,Instant messaging,,Socket,Asynchronous modle</p><p><b> 目 錄</b></p><p>
10、;<b> 摘 要I</b></p><p> AbstractII</p><p> 1 前言- 1 -</p><p> 1.1 選題研究的背景與意義- 1 -</p><p> 1.2 系統(tǒng)的研究現(xiàn)狀- 2 -</p><p> 1.3 系統(tǒng)內(nèi)容與目標(biāo)-
11、2 -</p><p> 1.4 系統(tǒng)綜述- 2 -</p><p> 2 系統(tǒng)開發(fā)環(huán)境和關(guān)鍵技術(shù)- 3 -</p><p> 2.1 面向服務(wù)的體系結(jié)構(gòu)- 3 -</p><p> 2.2 關(guān)鍵技術(shù)- 4 -</p><p> 2.2.1 Visual C++和面向?qū)ο蟪绦蛟O(shè)計(jì)- 4 -&
12、lt;/p><p> 2.2.2 M F C- 4 -</p><p> 2.2.3 WINDOWS SOCKETS網(wǎng)絡(luò)編程接口- 5 -</p><p> 2.2.4 TCP/IP協(xié)議、TCP協(xié)議- 6 -</p><p> 2.2.5 Client/Server結(jié)構(gòu)(客戶機(jī)/服務(wù)器模式)- 8 -</p><
13、;p> 3 系統(tǒng)分析與設(shè)計(jì)- 9 -</p><p> 3.1 系統(tǒng)分析- 9 -</p><p> 3.2 系統(tǒng)設(shè)計(jì)- 11 -</p><p> 3.2.1 設(shè)計(jì)原則- 11 -</p><p> 3.2.2 工作流程- 12 -</p><p> 3.2.3 功能設(shè)計(jì)- 13
14、-</p><p> 3.2.4 共享數(shù)據(jù)類設(shè)計(jì)- 14 -</p><p> 4 系統(tǒng)實(shí)現(xiàn)- 17 -</p><p> 4.1 服務(wù)器端設(shè)計(jì)實(shí)現(xiàn)- 17 -</p><p> 4.1.1 服務(wù)器端靜態(tài)類圖- 17 -</p><p> 4.1.2 服務(wù)器主要類介紹- 18 -</p&g
15、t;<p> 4.1.3 服務(wù)器端主要過程介紹- 21 -</p><p> 4.2 客戶端設(shè)計(jì)實(shí)現(xiàn)- 25 -</p><p> 4.2.1 客戶端靜態(tài)類圖- 25 -</p><p> 4.2.2 客戶端主要過程介紹- 26 -</p><p> 4.3 系統(tǒng)測(cè)試- 28 -</p>&
16、lt;p> 4.3.1 測(cè)試意義- 28 -</p><p> 4.3.2軟件測(cè)試的目標(biāo)- 28 -</p><p> 4.3.3軟件測(cè)試的方法- 28 -</p><p> 4.3.4 測(cè)試用例- 29 -</p><p> 5 總結(jié)與展望- 30 -</p><p> 參考文獻(xiàn)- 3
17、2 -</p><p> 致 謝- 33 -</p><p><b> 1 前言</b></p><p> 1.1 選題研究的背景與意義</p><p> 隨著計(jì)算機(jī)網(wǎng)絡(luò)日新月異的發(fā)展,人們的交流方式越來越多,傳統(tǒng)的交流方式,如:信件、電報(bào)、電話等已經(jīng)難以滿足人們的交流要求,在互聯(lián)網(wǎng)上即時(shí)的和好友取得聯(lián)系
18、,已經(jīng)成為當(dāng)今社會(huì)人們主流的聯(lián)系方式。因此,計(jì)算機(jī)之間進(jìn)行即時(shí)通訊、發(fā)送文件等交流方式已經(jīng)成為必然潮流。因此出現(xiàn)了QQ、UC等聊天工具,然而QQ、UC等聊天工具雖然方便、實(shí)用,但是,娛樂功能太多,有很多吸引人的娛樂功能,從一定程度上來說,是一種娛樂工具,不能作為用于即時(shí)通訊、文件共享的專用工具。目前,用于實(shí)現(xiàn)單一的即時(shí)通訊、文件共享的軟件實(shí)在太少,而且它們中大部分都對(duì)遠(yuǎn)程服務(wù)器有非常大的依賴性,沒有徹底實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的交流。為此,我們決定開
19、發(fā)一個(gè)專用于實(shí)現(xiàn)基于局域網(wǎng)內(nèi)部計(jì)算機(jī)之間即時(shí)通訊、文件傳輸?shù)能浖?,以方便?nèi)網(wǎng)計(jì)算機(jī)之間信息的交流。本軟件屬于點(diǎn)對(duì)點(diǎn)連接的,在連接并通信時(shí),尤其是近程的即時(shí)通訊,徹底的脫離了遠(yuǎn)程的服務(wù)器,避免了和遠(yuǎn)程服務(wù)器連接時(shí)過多的浪費(fèi)網(wǎng)絡(luò)資源。并且避免了服務(wù)器忙或與服務(wù)器無法連接時(shí),浪費(fèi)過多時(shí)間用于和服務(wù)器建立連接。</p><p> 本系統(tǒng)采用基于Socket的局域網(wǎng)通信工具的設(shè)計(jì)與實(shí)現(xiàn)的方法?;赟ocket的局域網(wǎng)通信
20、軟件可以為企業(yè)原有的局域網(wǎng)提供一種良好,安全,快速的通信機(jī)制。它的實(shí)現(xiàn)無需對(duì)企業(yè)原有的局域網(wǎng)硬件進(jìn)行任何改動(dòng),具有實(shí)現(xiàn)成本低廉的優(yōu)點(diǎn),它的使用能有效地降低局域網(wǎng)通信負(fù)荷,提高局域網(wǎng)的使用效率,可以很好地解決企業(yè)內(nèi)部局域網(wǎng)的各種通信需求。 基于Socket的局域網(wǎng)聊天工具很好地詮釋了Socket通信的原理,并且在企業(yè)內(nèi)部通信、教學(xué)、討論等應(yīng)用中都具有一定的實(shí)用價(jià)值。它具有信息收發(fā)速度快,保密性好,占用網(wǎng)絡(luò)帶寬資源低,占用服務(wù)器吞吐能力低,
21、易于編程實(shí)現(xiàn)等優(yōu)點(diǎn)?;赟ocket的局域網(wǎng)通信軟件應(yīng)用范圍廣闊,不但可以處理傳統(tǒng)的通信需求,而且也能擴(kuò)展以適應(yīng)新型的網(wǎng)絡(luò)應(yīng)用,如網(wǎng)絡(luò)教育,數(shù)據(jù)影音傳輸?shù)?,擁有廣泛的應(yīng)用前景。 </p><p> 1.2 系統(tǒng)的研究現(xiàn)狀</p><p> 基于局域網(wǎng)的即時(shí)通信工具,實(shí)際上是互聯(lián)網(wǎng)即時(shí)通信工具的一個(gè)小規(guī)模版本,廣域網(wǎng)上的即時(shí)通信工具,如今一般采用UDP或者 TCP協(xié)議體系來實(shí)現(xiàn) ,開發(fā)
22、技術(shù)已經(jīng)比較成熟,比如較早的ICQ,MSN Messenger, Yahoo。除了這些國外開發(fā)的產(chǎn)品,還有國產(chǎn)的有名的QQ,新浪UC,LAVA-LAVA等,這些工具統(tǒng)統(tǒng)都實(shí)現(xiàn)了廣域網(wǎng)上的即時(shí)通信,盡管都是即時(shí)通信,實(shí)現(xiàn)了即時(shí)聊天,以及文件傳輸?shù)闹饕δ?,但是也各有各的特色,比如ICQ的巨大客戶群,MSN的個(gè)性化表情,YAHOO通的易操作性等。而QQ也具有一個(gè)相當(dāng)方便的屏幕截圖功能,另外就是,所有上述軟件都實(shí)現(xiàn)了網(wǎng)絡(luò)即時(shí)的視頻,語音聊天功
23、能。這些軟件,在使用方面各有特色,在實(shí)現(xiàn)方面也各有所長,但基于這些產(chǎn)品正在商業(yè)運(yùn)營階段,其實(shí)現(xiàn)方式屬于商業(yè)機(jī)密,具體細(xì)節(jié)不一定得知,但是它在大的方面無非就是各種利用各種平臺(tái)上的網(wǎng)絡(luò)通信接口,建構(gòu)基于下層TCP/IP,或者UDP協(xié)議的軟件產(chǎn)品。</p><p> 1.3 系統(tǒng)內(nèi)容與目標(biāo)</p><p> 本課題主要研究的是局域網(wǎng)聊天軟件,此聊天軟件分為服務(wù)器程序和客戶端程序,本課題的目
24、標(biāo)是能實(shí)現(xiàn)用戶在客戶端與服務(wù)器端傳遞文字信息。</p><p> 主要研究開發(fā)內(nèi)容是:熟悉C++和VC的操作,搭配系統(tǒng)開發(fā)平臺(tái),探索在此開發(fā)平臺(tái)下,利用socket編程技術(shù)、多線程開發(fā)技術(shù)、TCP、UDP協(xié)議等進(jìn)行局域網(wǎng)聊天軟件的實(shí)際開發(fā)。</p><p><b> 1.4 系統(tǒng)綜述</b></p><p> 現(xiàn)在,多渠道的信息源、網(wǎng)絡(luò)
25、化的數(shù)據(jù)分布、快捷醫(yī)用的交互操作、智能化的分析決策等特點(diǎn)越來越成為衡量有兩聊天軟件的關(guān)鍵,因此,本人開發(fā)一個(gè)局域網(wǎng)聊天軟件,該聊天軟件是基于C++語言運(yùn)行于VC平臺(tái)上,利用的技術(shù)主要是Socket通信,使用配置文件作為數(shù)據(jù)管理。為實(shí)現(xiàn)和方便客戶端間通信,在客戶端進(jìn)行了人性化的界面設(shè)計(jì),用戶可以注冊(cè)號(hào)碼,登陸界面,具有發(fā)送離線消息功能。</p><p> 第 1 章對(duì)本次課題的背景及意義、課題現(xiàn)狀、課題內(nèi)容與目標(biāo)
26、進(jìn)行了深入的闡述。</p><p> 第 2 章介紹了系統(tǒng)的開發(fā)環(huán)境和關(guān)鍵技術(shù),例如Socket編程技術(shù),非阻塞開發(fā)模式等等。</p><p> 第 3 章是系統(tǒng)分析與設(shè)計(jì)。將對(duì)系統(tǒng)進(jìn)行需求分析,對(duì)組成系統(tǒng)的功能模塊進(jìn)行劃分,對(duì)每個(gè)模塊將要實(shí)現(xiàn)的功能進(jìn)行闡述和說明。對(duì)系統(tǒng)的結(jié)構(gòu)進(jìn)行設(shè)計(jì),設(shè)計(jì)共享數(shù)據(jù)結(jié)構(gòu)。</p><p> 第 4 章是系統(tǒng)實(shí)現(xiàn),分別介紹了服務(wù)
27、器端和客戶端每個(gè)功能的執(zhí)行過程,畫出主要模塊的流程圖。</p><p> 第 5 章介紹系統(tǒng)測(cè)試。</p><p> 最后,對(duì)本設(shè)計(jì)進(jìn)行歸納總結(jié),全面闡述本次設(shè)計(jì)中的體會(huì)。</p><p> 2 系統(tǒng)開發(fā)環(huán)境和關(guān)鍵技術(shù)</p><p> 2.1 面向服務(wù)的體系結(jié)構(gòu)</p><p> 本設(shè)計(jì)是一個(gè)面向中小型
28、機(jī)構(gòu)內(nèi)部通信需求的局域網(wǎng)即時(shí)信息軟件,要在短時(shí)間內(nèi)開發(fā)出來并且要滿足客戶要求,無論是硬件還是軟件都要選擇合適,要求如下:開發(fā)設(shè)備應(yīng)該完備;開發(fā)機(jī)器的性能必須穩(wěn)定;操作系統(tǒng)的選擇應(yīng)該適當(dāng);開發(fā)出的程序可以在盡可能多的平臺(tái)上運(yùn)行;要求運(yùn)行機(jī)配置盡可能低檔。對(duì)此,我們選擇的硬件環(huán)境和軟件環(huán)境如下: </p><p><b> 硬件環(huán)境 </b></p><p> 處理
29、器:Intel Pentium PIII或更高處理器 </p><p> 內(nèi)存:256MB或更高 </p><p><b> 網(wǎng)絡(luò):局域網(wǎng)</b></p><p> 開發(fā)該系統(tǒng)應(yīng)盡可能采用高檔的硬件。因此,在應(yīng)用時(shí)應(yīng)采用更好的配置。</p><p><b> 軟件環(huán)境 </b></
30、p><p> 操作系統(tǒng):Windows 2000 /Windows XP / Windows 2003 </p><p> 開發(fā)平臺(tái):Microsoft Visual C++ 6.0</p><p><b> 開發(fā)語言:C++</b></p><p><b> 2.2 關(guān)鍵技術(shù)</b><
31、/p><p> 2.2.1 Visual C++和面向?qū)ο蟪绦蛟O(shè)計(jì)</p><p> VC基于C,C++語言,主要由是MFC組成,是與系統(tǒng)聯(lián)系非常緊密的編程工具,它兼有高級(jí),和低級(jí)語言的雙重性,功能強(qiáng)大,靈活,執(zhí)行效率高,幾乎可說VC在 Windows平臺(tái)無所不能[2]。從20世紀(jì)70年代第一次提出面向?qū)ο蟮母拍铋_始,到現(xiàn)在面向?qū)ο蠹夹g(shù)發(fā)展成為一種比較成熟的編程思想,通過面向?qū)ο蠹夹g(shù),可以
32、將現(xiàn)實(shí)世界直接影射到對(duì)象空間,從而為系統(tǒng)的設(shè)計(jì)和開發(fā)帶來革命性的影響。Visual C++是一個(gè)典型的面向?qū)ο蟪绦虻脑O(shè)計(jì)語言,它也是目前為止功能最強(qiáng)、最受歡迎、應(yīng)用最廣泛、高效的Windows應(yīng)用程序開發(fā)工具,它是在C 語言基礎(chǔ)之上發(fā)展起來的,是C語言的超集。</p><p> Visual C++是功能最為強(qiáng)大可視化開發(fā)工具,它不僅支持傳統(tǒng)的軟件開發(fā)方法,更重要的是它能支持面向?qū)ο?、可視化的開發(fā)風(fēng)格。因此Vi
33、sual C++又稱作是一個(gè)集成開發(fā)工具,它提供了軟件代碼自動(dòng)生成和可視化的資源編輯功能。Visual C++具有的優(yōu)點(diǎn):提供了面向?qū)ο蟮膽?yīng)用程序框架MFC(Microsoft Foundation Class),簡化了程序員的編程工作,提高了模塊的可重用性;提供了基于CASE技術(shù)的可視化軟件的自動(dòng)生成和維護(hù)工具AppWizard、ClassWizard、Visual Studio、WizardBar等,實(shí)現(xiàn)了直觀、可視的程序設(shè)計(jì)風(fēng)格
34、,方便地編和管理各種類,維護(hù)程序的源代碼;封裝了Windows的API函數(shù)、USER、KERNEL、GDI函數(shù),簡化了編程時(shí)創(chuàng)建、維護(hù)窗口的許多復(fù)雜的工作[3]。</p><p> 2.2.2 M F C</p><p> MFC,微軟基礎(chǔ)類(Microsoft Foundation Classes),實(shí)際上是微軟提供的,用于在C++環(huán)境下編寫應(yīng)用程序的一個(gè)框架和引擎,VC++是Win
35、DOS下開發(fā)人員使用的專業(yè)C++ SDK(SDK,Standard SoftWare Develop Kit,專業(yè)軟件開發(fā)平臺(tái)),MFC 就是掛在它之上的一個(gè)輔助軟件開發(fā)包[1],MFC作為與VC++血肉相連的部分(注意C++和VC++的區(qū)別:C++是一種程序設(shè)計(jì)語言,是一種大家都承認(rèn)的 軟件編制的通用規(guī)范,而VC++只是一個(gè)編譯器,或者說是一種編譯器+源程序編輯器的IDE,WS,PlatForm,這跟Pascal和Delphi的關(guān)系一
36、個(gè)道理,Pascal是Delphi的語言基礎(chǔ),Delphi使用Pascal規(guī)范來進(jìn)行Win下應(yīng)用程序的開發(fā)和編譯,卻不同于Basic語言和VB的 關(guān)系,Basic語言在VB開發(fā)出來被應(yīng)用的年代已經(jīng)成了Basic語言的新規(guī)范,VB新加的Basic語言要素,如面向?qū)ο蟪绦蛟O(shè)計(jì)的要素,是一種性質(zhì)上的飛躍,使VB既是一個(gè)IDE,又成長成一個(gè)新的程序設(shè)計(jì)語言),MFC同BC++集成的VCL一樣是一個(gè)非外</p><p>
37、 2.2.3 WINDOWS SOCKETS網(wǎng)絡(luò)編程接口</p><p> 選定WINDOWS平臺(tái)開發(fā)網(wǎng)絡(luò)通信程序,可以選擇WINDOWS的SOCKETS編程接口,Windows Sockets是一套開放的、支持多種協(xié)議的Windows下的網(wǎng)絡(luò)編程接口[12]。現(xiàn)在的Winsock已經(jīng)基本上實(shí)現(xiàn)了與協(xié)議無關(guān),你可以使用Winsock來調(diào)用多種協(xié)議的功能,但較常使用的是TCP/IP協(xié)議。Windows socke
38、ts無疑是我們進(jìn)行網(wǎng)絡(luò)編程的利器。所有的Windows Sockets實(shí)現(xiàn)都支持流套接口和數(shù)據(jù)報(bào)套接口。應(yīng)用程序調(diào)用Windows Sockets的API實(shí)現(xiàn)相互之間的通訊。Windows Sockets又利用下層的網(wǎng)絡(luò)通訊協(xié)議功能和操作系統(tǒng)調(diào)用實(shí)現(xiàn)實(shí)際的通訊工作。它們之間的關(guān)系如圖1所示: </p><p> 圖1 Windows Sockets實(shí)現(xiàn)通訊工作的各層關(guān)系圖</p&
39、gt;<p> 2.2.4 TCP/IP協(xié)議、TCP協(xié)議</p><p> 網(wǎng)際協(xié)議IP是TCP/IP的心臟,也是網(wǎng)絡(luò)層中最重要的協(xié)議。 </p><p> IP層接收由更低層(網(wǎng)絡(luò)接口層例如以太網(wǎng)設(shè)備驅(qū)動(dòng)程序)發(fā)來的數(shù)據(jù)包,并把該數(shù)據(jù)包發(fā)送到更高層---TCP或UDP層;相反,IP層也把從TCP或UDP層接收來的數(shù)據(jù)包傳送到更低層。IP數(shù)據(jù)包是不可靠的,因?yàn)镮P并沒有
40、做任何事情來確認(rèn)數(shù)據(jù)包是按順序發(fā)送的或者沒有被破壞。IP數(shù)據(jù)包中含有發(fā)送它的主機(jī)的地址(源地址)和接收它的主機(jī)的地址(目的地址)[15]。</p><p> 如果IP數(shù)據(jù)包中有已經(jīng)封好的TCP數(shù)據(jù)包,那么IP將把它們向‘上’傳送到TCP層。TCP將包排序并進(jìn)行錯(cuò)誤檢查,同時(shí)實(shí)現(xiàn)虛電路間的連接[7]。TCP數(shù)據(jù)包中包括序號(hào)和確認(rèn),所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。</p>&l
41、t;p> UDP與TCP位于同一層,但對(duì)于數(shù)據(jù)包的順序錯(cuò)誤或重發(fā)。因此,UDP不被應(yīng)用于那些使用虛電路的面向連接的服務(wù),UDP主要用于那些面向查詢---應(yīng)答的服務(wù).</p><p> TCP和UDP服務(wù)通常有一個(gè)客戶/服務(wù)器的關(guān)系。兩個(gè)系統(tǒng)間的多重連接是這樣相互確認(rèn)并協(xié)調(diào)一致的,TCP或UDP連接唯一地使用每個(gè)信息中的如下四項(xiàng)進(jìn)行確認(rèn): </p><p> 源IP地址 發(fā)送包的
42、IP地址。 </p><p> 目的IP地址 接收包的IP地址。</p><p> 源端口 源系統(tǒng)上的連接的端口。 </p><p> 目的端口 目的系統(tǒng)上的連接的端口。</p><p> 端口是一個(gè)軟件結(jié)構(gòu),被客戶程序或服務(wù)進(jìn)程用來發(fā)送和接收信息。一個(gè)端口對(duì)應(yīng)一個(gè)16比特的數(shù)。服務(wù)進(jìn)程通常使用一個(gè)固定的端口,例如,SMTP使用25[
43、8]。這些端口號(hào)是“廣為人知”的,因?yàn)樵诮⑴c特定的主機(jī)或服務(wù)的連接時(shí),需要這些地址和目的地址進(jìn)行通訊,如圖2所示。</p><p> 圖2 面向連接的(TCP)連接過程</p><p> 2.2.5 Client/Server結(jié)構(gòu)(客戶機(jī)/服務(wù)器模式)</p><p> Client/Server結(jié)構(gòu)(C/S結(jié)構(gòu))是大家熟知的客戶機(jī)和服務(wù)器結(jié)構(gòu)[3]。通過
44、它可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì),將任務(wù)合理分配到Client端和Server端來實(shí)現(xiàn),降低了系統(tǒng)的通訊開銷。目前大多數(shù)應(yīng)用軟件系統(tǒng)都是Client/Server形式的兩層結(jié)構(gòu)。</p><p> C/S結(jié)構(gòu)軟件分為客戶機(jī)和服務(wù)器兩層,客戶機(jī)不是毫無運(yùn)算能力的輸入、輸出設(shè)備,而是具有了一定的數(shù)據(jù)處理和數(shù)據(jù)存儲(chǔ)能力,通過把應(yīng)用軟件的計(jì)算和數(shù)據(jù)合理地分配在客戶機(jī)和服務(wù)器兩端,可以有效地降低網(wǎng)絡(luò)通信量和服務(wù)器運(yùn)算量[
45、9]。由于服務(wù)器連接個(gè)數(shù)和數(shù)據(jù)通信量的限制,這種結(jié)構(gòu)的軟件適于在用戶數(shù)目不多的局域網(wǎng)內(nèi)使用。</p><p> C/S結(jié)構(gòu)的優(yōu)點(diǎn)是能充分發(fā)揮客戶端PC的處理能力,很多工作可以在客戶端處理后再提交給服務(wù)器。對(duì)應(yīng)的優(yōu)點(diǎn)就是客戶端響應(yīng)速度快。缺點(diǎn)主要有以下幾個(gè):</p><p> 只適用于局域網(wǎng)。而隨著互聯(lián)網(wǎng)的飛速發(fā)展,移動(dòng)辦公和分布式辦公越來越普及,這需要我們的系統(tǒng)具有擴(kuò)展性。這種方式遠(yuǎn)程
46、訪問需要專門的技術(shù),同時(shí)要對(duì)系統(tǒng)進(jìn)行專門的設(shè)計(jì)來處理分布式的數(shù)據(jù)。</p><p> 3 系統(tǒng)分析與設(shè)計(jì)</p><p><b> 3.1 系統(tǒng)分析</b></p><p> 聊天交流是目前互聯(lián)網(wǎng)提供的主要內(nèi)容。聊天系統(tǒng)有多種實(shí)現(xiàn)方式,類似ICQ屬于一種點(diǎn)對(duì)點(diǎn)的聊天系統(tǒng);還有一種是基于Socket的集中式聊天系統(tǒng),這種聊天系統(tǒng)需要登陸
47、統(tǒng)一的聊天服務(wù)器。在基于Socket的聊天系統(tǒng)中,主要有兩種角色:服務(wù)器和客戶端,不同的客戶端登陸集中式的服務(wù)器,通過服務(wù)器將一個(gè)客戶端發(fā)出的信息推送到其他所有客戶端[4]。基于Socket的聊天系統(tǒng)最早實(shí)現(xiàn)是使用網(wǎng)頁刷新方式,通過客戶端不斷地自動(dòng)刷新,服務(wù)器端整個(gè)頁面內(nèi)容下載到客戶端顯示,這種方式的聊天速度慢,而且有刷屏現(xiàn)象,很快被更新的聊天技術(shù)所替代。
48、 </p><p> 聊天系統(tǒng)在客戶端和服務(wù)器之間主要傳送的是文字信息,服務(wù)器端只需要把最近的文字信息推送到客戶端,這樣減少了網(wǎng)絡(luò)傳輸內(nèi)容,節(jié)省了網(wǎng)絡(luò)傳輸?shù)臅r(shí)間,無疑提高了聊天速度。這種“推”技術(shù)是目前基于Socket聊天系統(tǒng)的主要實(shí)現(xiàn)技術(shù)。</p><p> 在基于Socket的聊天系統(tǒng),客戶端和服務(wù)器必須保持隨時(shí)隨地的連接。這有別于普通Web瀏覽的連接方式。在使用
49、瀏覽器訪問服務(wù)器時(shí),先由客戶端發(fā)出HTTP協(xié)議,然后服務(wù)器響應(yīng)處理這個(gè)客戶端的響應(yīng),再返回處理結(jié)果;請(qǐng)求(Request)和響應(yīng)(Response)是一種一對(duì)一的前后因果關(guān)系。而在基于Socket的聊天系統(tǒng)中,客戶端發(fā)出聊天信息的同時(shí),客戶端也在接受服務(wù)器發(fā)送過來的其他人的聊天信息,因此,請(qǐng)求和響應(yīng)不存在那種前后對(duì)應(yīng)關(guān)系,是兩種分別獨(dú)立進(jìn)行的進(jìn)程。因?yàn)榉?wù)器任何時(shí)候都可能發(fā)送信息到客戶端,因此,客戶端和服務(wù)器一旦建立連接,必須能讓服務(wù)器
50、在以后發(fā)送中尋找定位到這個(gè)連接。</p><p> 局域網(wǎng)聊天系統(tǒng)使該系統(tǒng)的用戶能夠通過客戶端登入到該系統(tǒng),然后直接與系統(tǒng)交互[11]。首先,需啟動(dòng)服務(wù)器,進(jìn)行服務(wù)器的配置,進(jìn)行正確的服務(wù)器配置和數(shù)據(jù)庫連接并測(cè)試成功后,開啟服務(wù)器。接下來,在客戶端,該系統(tǒng)的用戶能夠通過登陸界面進(jìn)入,然后直接與系統(tǒng)交互,進(jìn)行文字傳送。本系統(tǒng)支持的活動(dòng)列表如下:</p><p> 配置服務(wù)器,設(shè)置IP;&
51、lt;/p><p><b> 開啟服務(wù)器;</b></p><p> 用戶客戶端與服務(wù)器連接;</p><p> 用戶與系統(tǒng)交互,進(jìn)行文字傳送;</p><p> 用戶與系統(tǒng)交互,進(jìn)行文件傳送;</p><p> 用戶與服務(wù)器交互,捕捉其他用戶界面;</p><p>
52、 用戶客戶端與服務(wù)器端斷開連接;</p><p> 該聊天程序分為服務(wù)器端和客戶端兩個(gè)部分。</p><p><b> 客戶端實(shí)現(xiàn)功能:</b></p><p> 向在線主機(jī)發(fā)送消息并接收消息。</p><p> 更新成員狀態(tài)??蛻舳思皶r(shí)刷新網(wǎng)內(nèi)其他主機(jī)在線狀況。</p><p> 更
53、新成員列表,當(dāng)某主機(jī)被斷開連接時(shí),客戶端及時(shí)刷新列表。</p><p> 向某成員主機(jī)傳送文件。</p><p> 接收某成員主機(jī)傳送的文件并保存。</p><p> 捕捉成員主機(jī)的屏幕界面。</p><p><b> 服務(wù)器端實(shí)現(xiàn)功能:</b></p><p> 維護(hù)成員列表:包括接受
54、新連接,剔除舊連接。</p><p> 通知客戶端更新成員狀態(tài)。</p><p> 通知客戶端更新成員列表。</p><p><b> 驗(yàn)證客戶端IP。</b></p><p> 禁止已登陸用戶再次登陸。</p><p> 為用戶客戶端傳送信息。</p><p>
55、 為用戶客戶端傳送文件。</p><p><b> 關(guān)系圖如圖3所示:</b></p><p><b> 圖3 關(guān)系功能圖</b></p><p><b> 3.2 系統(tǒng)設(shè)計(jì)</b></p><p> 3.2.1 設(shè)計(jì)原則</p><p>
56、 考慮到系統(tǒng)的可重用性和伸縮性,需要將本系統(tǒng)的網(wǎng)絡(luò)通信底層和應(yīng)用系統(tǒng)分離開。這樣,基于可重用的網(wǎng)絡(luò)通信層,可以實(shí)現(xiàn)其他各種實(shí)時(shí)性較高的應(yīng)用系統(tǒng)。</p><p> 本系統(tǒng)在架構(gòu)設(shè)計(jì)上將分4個(gè)層次,如圖4所示。</p><p><b> 圖4 架構(gòu)層次</b></p><p> 本系統(tǒng)最底層是Socket通信層,將負(fù)責(zé)客戶端和服務(wù)器之間快速
57、的數(shù)據(jù)交換,它通過接口層和最上面應(yīng)用層保持實(shí)時(shí)數(shù)據(jù)聯(lián)系。用戶從客戶端進(jìn)入到本系統(tǒng)前,將實(shí)現(xiàn)統(tǒng)一的用戶登錄驗(yàn)證機(jī)制。Socket底層設(shè)計(jì)分兩大部分:協(xié)議設(shè)計(jì)和連接處理設(shè)計(jì):協(xié)議設(shè)計(jì)和連接處理設(shè)計(jì);CSocket層的目的是提供底層和應(yīng)用蹭一個(gè)中介媒體的作用,但是不能設(shè)計(jì)得太復(fù)雜,以免延誤數(shù)據(jù)傳送時(shí)間。</p><p> 3.2.2 工作流程</p><p> 只有充分地了解了聊天程序的工作
58、流程,才能對(duì)整個(gè)系統(tǒng)的理解更加深刻,聊天程序的工作流程如圖5所示。</p><p><b> 圖5 工作流程</b></p><p> 3.2.3 功能設(shè)計(jì)</p><p> 局域網(wǎng)聊天系統(tǒng)以局域網(wǎng)內(nèi)的用戶為應(yīng)用對(duì)象,經(jīng)過各方面需求分析,該系統(tǒng)主要由服務(wù)器端和客戶端兩部分構(gòu)成,各功能模塊如圖6所示。</p><p>
59、;<b> 圖6 功能模塊圖</b></p><p> 3.2.4 共享數(shù)據(jù)類設(shè)計(jì)</p><p><b> A.用戶設(shè)計(jì):</b></p><p><b> 1.用戶狀態(tài)設(shè)計(jì)</b></p><p> 客戶端與服務(wù)器端都擁有成員列表。該程序?qū)⒊蓡T列表設(shè)計(jì)為三種狀態(tài)
60、</p><p> 登陸狀態(tài):當(dāng)用戶登陸服務(wù)器事,設(shè)置用戶狀態(tài)為登陸狀態(tài),服務(wù)器根據(jù)該用戶列表狀態(tài)發(fā)送成員列表。</p><p> 在線狀態(tài):用戶在線,當(dāng)兩個(gè)用戶都在線時(shí),可以相互發(fā)送和接受成員列表。</p><p> 離線狀態(tài):當(dāng)用戶離線時(shí),不能發(fā)送和接受消息。</p><p> 在線用戶之間可以直接發(fā)送消息;對(duì)離線離線用戶需要服務(wù)
61、器轉(zhuǎn)發(fā)。</p><p> 轉(zhuǎn)發(fā)關(guān)系如圖7所示。</p><p><b> 在線用戶發(fā)送消息</b></p><p> 在線用戶給離線用戶發(fā)送消息 </p><p><b> 圖7 轉(zhuǎn)發(fā)關(guān)系圖</b></p><p><b> 2.用戶類設(shè)計(jì)&l
62、t;/b></p><p> 在程序中聲明CUserInfo信息類。在該類中聲明USERSTATUE枚舉類型,描述用戶狀態(tài)。</p><p> ONLINE:在線狀態(tài)</p><p> OFFLINE:離線狀態(tài)</p><p> LOGIN:登陸狀態(tài)</p><p> UNKNOWN:未知狀態(tài),初始化狀
63、態(tài)。</p><p> 成員函數(shù)如表1CUserInfo 成員函數(shù),類成員變量如表2所示。</p><p><b> 表1 成員函數(shù)</b></p><p><b> B.?dāng)?shù)據(jù)包類設(shè)計(jì)</b></p><p> 在程序中聲明CChatPacket類描述服務(wù)器和客戶端接收和發(fā)送的數(shù)據(jù)包。在該類
64、中聲明PACKETTYPE枚舉類型。</p><p> MESSAGE:客戶端發(fā)送的消息</p><p> TFILE:傳送的文件信息</p><p> SERVERMSG:服務(wù)器發(fā)送的消息</p><p> UNKNOWN:未知類型</p><p> 表2 CChatPakcet類成員函數(shù)</p&g
65、t;<p> 表3 CChatPacket類成員變量</p><p><b> 4 系統(tǒng)實(shí)現(xiàn)</b></p><p> 4.1 服務(wù)器端設(shè)計(jì)實(shí)現(xiàn)</p><p> 4.1.1 服務(wù)器端靜態(tài)類圖</p><p> 圖8 服務(wù)器靜態(tài)類圖 </p><p> 該圖展示
66、的是服務(wù)器端靜態(tài)類圖,包括服務(wù)器端一些靜態(tài)配置信息,如服務(wù)器地址,服務(wù)器端口,用戶信息,用戶狀況等。</p><p> 4.1.2 服務(wù)器主要類介紹</p><p> CServerDlg類:創(chuàng)建服務(wù)器主窗口,管理用戶信息鏈表,管理在線用戶鏈表,管理離線用戶鏈表,讀取保存用戶信息,讀取保存離線消息等。</p><p><b> 表4.類成員函數(shù)<
67、;/b></p><p> CListenSocket類 :派生于MFC的CSocket 類,用于接受客戶端的連接請(qǐng)求,在該類中重寫了CAsyncSocket類OnAccept()虛函數(shù)。當(dāng)客戶端連接服務(wù)器時(shí),OnAccept()函數(shù)被調(diào)用。</p><p><b> 表5 成員函數(shù)</b></p><p> CClientSock
68、et 類:派生與MFC的CSocket類,用于接收客戶端和向其發(fā)送數(shù)據(jù)。在該類中重寫CAsyncSocket類OnReceive()和OnClose()虛函數(shù)。</p><p><b> 表6 成員函數(shù)</b></p><p> CServerAddressDlg: 用與設(shè)置服務(wù)器地址和斷口。</p><p> CServerApp:用于
69、生成唯一實(shí)例。</p><p> 4.1.3 服務(wù)器端主要過程介紹</p><p> 啟動(dòng)服務(wù)器:啟動(dòng)服務(wù)器的過程就是創(chuàng)建套接字并開始監(jiān)聽客戶端的過程。</p><p> 主要函數(shù): CSocket::Create()函數(shù);</p><p> 執(zhí)行過程: CSocket::Cretate -----CAsyncSocket------
70、CAsyncSocket</p><p> ----------CAsyncSocket::Socket()------CAsyncSocket::Bind()------〉</p><p> CAsyncSocket:: AtachHandle()--CAsyncSocket::Asyncselect()</p><p> MFC 的底部函數(shù)在AttachH
71、andle()中完成,流程圖如圖9所示:</p><p><b> 圖9 流程圖</b></p><p> 服務(wù)器登陸如界面如圖10所示:</p><p> 圖10 服務(wù)器開啟界面</p><p><b> 初始化:</b></p><p><b> 列表
72、試圖控件初始化</b></p><p><b> 用戶列表初始化</b></p><p> 讀取離線消息;離線消息包括:發(fā)送消息的用戶,接收消息的用戶,接收和發(fā)送消息的時(shí)間</p><p><b> 接受客戶端請(qǐng)求:</b></p><p> CListenSocket::OnA
73、ccept()---------CServerDlg::ProcessPendingAccept().接收數(shù)據(jù):在FD_READ網(wǎng)絡(luò)事件發(fā)生時(shí),CClienSocket::OnReceive()被調(diào)用.在該函數(shù)中與CSocket, CArchive, CSocketFile 協(xié)同工作完成文件的工作,同時(shí)調(diào)用CSocket 類的Receive()函數(shù)。其流程圖如下:</p><p><b> 接受過程流
74、程圖</b></p><p><b> 處理數(shù)據(jù):</b></p><p><b> 保存離線消息</b></p><p><b> 保存用戶信息</b></p><p><b> 更新用戶列表</b></p><p
75、><b> 發(fā)送用戶鏈表</b></p><p><b> 轉(zhuǎn)發(fā)離線消息</b></p><p><b> 更新服務(wù)器界面</b></p><p><b> 退出:</b></p><p> 調(diào)用OnDestroy()函數(shù)</p>
76、;<p><b> 保存用戶信息</b></p><p><b> 保存離線消息</b></p><p><b> 清理資源</b></p><p> 4.2 客戶端設(shè)計(jì)實(shí)現(xiàn)</p><p> 4.2.1 客戶端靜態(tài)類圖</p><
77、p><b> 客戶端靜態(tài)類圖</b></p><p> 該圖展示的是系統(tǒng)客戶端的靜態(tài)類圖,包括用戶信息類,客戶端監(jiān)聽套接字定義,客戶端聊天套接字定義,客戶端路信息配置,客戶端地址等等。</p><p> 4.2.2 客戶端主要過程介紹</p><p> 客戶端主要去實(shí)現(xiàn)的是功能:初始化,創(chuàng)建初始化窗口,接收消息、文件。</p
78、><p><b> 初始化:</b></p><p> 連接服務(wù)器,連接服務(wù)器的過程如圖11所示:</p><p> 圖11 客戶端連接圖</p><p><b> 客戶端間通訊:</b></p><p> 按情況CChatDlg類構(gòu)造函數(shù)</p>&l
79、t;p><b> 連接對(duì)方</b></p><p><b> 發(fā)送/接收消息</b></p><p><b> 傳送/接收文件</b></p><p> 客戶端運(yùn)行結(jié)果如下截圖所示:</p><p><b> 發(fā)送/接收消息</b><
80、/p><p><b> 接收文件</b></p><p><b> 4.3 系統(tǒng)測(cè)試</b></p><p> 4.3.1 測(cè)試意義</p><p> 本章對(duì)我們的系統(tǒng)做具體的測(cè)試,驗(yàn)證系統(tǒng)的功能是否得以實(shí)現(xiàn)。</p><p> 4.3.2軟件測(cè)試的目標(biāo)</p&
81、gt;<p> ?。?)測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行的程序的過程;</p><p> ?。?)好的測(cè)試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案;</p><p> ?。?) 成功的測(cè)試時(shí)發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。</p><p> 從上述規(guī)則可以看出,測(cè)試的正確定義是“為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程”。正確認(rèn)識(shí)測(cè)試是非常重
82、要的,測(cè)試目標(biāo)決定了測(cè)試方案的設(shè)計(jì)。沒有發(fā)現(xiàn)錯(cuò)誤的測(cè)試也是有價(jià)值的,完整的測(cè)試是評(píng)定測(cè)試質(zhì)量的一種方法。</p><p> 4.3.3軟件測(cè)試的方法</p><p> 軟件的測(cè)試分為兩種:黑盒測(cè)試和白盒測(cè)試。</p><p><b> 黑盒測(cè)試:</b></p><p> 黑盒測(cè)試也稱功能測(cè)試,它是通過測(cè)試來檢測(cè)
83、每個(gè)功能是否都能正常使用。在測(cè)試地,把程序看作一個(gè)不能打開的黑盒子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,在程序接口進(jìn)行測(cè)試。它只檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)而產(chǎn)生正確的輸出信息。黑盒測(cè)試著眼于程序外部結(jié)構(gòu),不考慮內(nèi)部邏輯結(jié)構(gòu),主要針對(duì)軟件界面和軟件功能進(jìn)行測(cè)試。</p><p><b> 白盒測(cè)試:</b></p>&
84、lt;p> 軟件的白盒測(cè)試是對(duì)軟件的過程性細(xì)節(jié)做細(xì)致的檢查。這種方法是把測(cè)試對(duì)象看做一個(gè)打開的盒子,它允許測(cè)試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計(jì)或選擇測(cè)試用例,對(duì)程序所有邏輯路徑進(jìn)行測(cè)試。通過在不同點(diǎn)檢查程序狀態(tài),確定實(shí)際狀態(tài)是否與預(yù)期的狀態(tài)一致。因此白盒測(cè)試又稱為結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試[5]。白盒測(cè)試主要是想對(duì)程序模塊進(jìn)行如下檢查:</p><p> 1、對(duì)程序模塊的所有獨(dú)立的執(zhí)行路徑至少測(cè)試
85、一遍。</p><p> 2、對(duì)所有的邏輯判定,取“真”與取“假”的兩種情況都能至少測(cè)一遍。</p><p> 3、在循環(huán)的邊界和運(yùn)行的界限內(nèi)執(zhí)行循環(huán)體。</p><p> 4、測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性,等等。</p><p> 4.3.4 測(cè)試用例</p><p> 黑盒測(cè)試:主要是同學(xué)幫助測(cè)試系統(tǒng)的功能,
86、看看主要功能是否能得以實(shí)現(xiàn)。</p><p> 白盒測(cè)試:主要是在編寫代碼的過程中對(duì)各個(gè)類進(jìn)行測(cè)試,檢查各個(gè)類的功能是否實(shí)現(xiàn),最后是對(duì)整個(gè)系統(tǒng)的測(cè)試,進(jìn)一步檢查各個(gè)類的功能。</p><p> 經(jīng)過以上測(cè)試,系統(tǒng)基本完成所需功能。</p><p><b> 測(cè)試用例</b></p><p><b> 5
87、 總結(jié)與展望</b></p><p> 經(jīng)過幾個(gè)月緊張的畢業(yè)設(shè)計(jì),局域網(wǎng)聊天軟件已基本完成,系統(tǒng)基本功能已經(jīng)實(shí)現(xiàn),測(cè)試運(yùn)行也完全正常。該系統(tǒng)完成了服務(wù)器端的配置與開啟。該系統(tǒng)操作簡便、易于使用。</p><p> 在畢業(yè)設(shè)計(jì)的初期階段,我主要學(xué)習(xí)了與本課題相關(guān)的理論知識(shí),包括:VC++的設(shè)置與開發(fā),MFC下的軟件開發(fā)過程等相關(guān)技術(shù),socket編程技術(shù)和多線程開發(fā)技術(shù),并
88、完成客戶端和服務(wù)器端文字信息傳遞實(shí)驗(yàn)。</p><p> 在查閱大量資料逐漸了解系統(tǒng)需求后,我編寫了系統(tǒng)的需求分析規(guī)格說明書和系統(tǒng)概要說明書。接著便進(jìn)入了系統(tǒng)詳細(xì)設(shè)計(jì)和編碼階段,在這個(gè)階段,由于自己動(dòng)手經(jīng)驗(yàn)不足和對(duì)開發(fā)工具的陌生,系統(tǒng)遇到了很多大大小小的問題,比如如何向注冊(cè)表中寫入連接字符傳,如何將所有留言狀態(tài)置為已讀,如何利用多線程、非堵塞I/O技術(shù)提高系統(tǒng)性能,在一次次克服困難的過程中,我得到了極大的鍛煉,
89、基本上掌握了一些的編程技巧,同時(shí)也獲得了許多寶貴的軟件開發(fā)經(jīng)驗(yàn)和技巧。 </p><p> 在這段時(shí)間里我學(xué)到了很多以前沒有學(xué)到的知識(shí),同時(shí)也將以前所學(xué)過的知識(shí)運(yùn)用到實(shí)踐項(xiàng)目中,在提高理論知識(shí)的基礎(chǔ)上,也充分鍛煉自己的動(dòng)手能力。</p><p> 當(dāng)然這個(gè)系統(tǒng)還存在許多有待完善之處:</p><p> 功能相對(duì)較少,有待于添加。</p><
90、p> 在文字傳送的同時(shí)增加表情發(fā)送的功能。</p><p> 由于自己經(jīng)驗(yàn)不足且時(shí)間有限,所以界面設(shè)計(jì)不盡人意。</p><p> 這次畢業(yè)設(shè)計(jì)的時(shí)間雖然不算太長,但使我對(duì)很多東西有了更深刻的認(rèn)識(shí)。總結(jié)如下:</p><p> 查閱資料和閱讀相關(guān)文獻(xiàn)的重要性。</p><p> 向老師和同學(xué)請(qǐng)教的重要性。</p>
91、<p> 勤動(dòng)手的重要性,在這次的一次次編寫代碼、調(diào)試代碼的過程中,我明白“代碼不是寫出來的,是調(diào)出來的”的道理。</p><p> 對(duì)待任何事情都要有耐心和恒心,遇到問題要冷靜地思考,積極找出癥結(jié)所在,逐個(gè)解決。</p><p> 轉(zhuǎn)眼本科生階段就要?jiǎng)澤暇涮?hào)了。通過這次畢業(yè)設(shè)計(jì),我更深刻的認(rèn)識(shí)到了教學(xué)實(shí)踐在大學(xué)課程中的重要性,同時(shí)也發(fā)覺到了自己在學(xué)習(xí)方面存在的不足之處,
92、在以后的學(xué)習(xí)中我會(huì)努力改進(jìn)這些不足、不斷提高自己的動(dòng)手實(shí)踐能力。</p><p><b> 參考文獻(xiàn)</b></p><p> 1.侯俊杰 深入淺出MFC(第二版)[M] 華中科技大學(xué)出版社 2001.1</p><p> 2.王燕 《面向?qū)ο蟮睦碚撆cc++實(shí)踐》[M] 清華大學(xué)出版社 1996 </p><p>
93、; 3.李師賢、李文軍、周曉聰?shù)?《面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)》[M] 高等教育出版社 2005.3</p><p> 4.孫鑫、余安萍 《VC++ 深入詳解》[M] 電子工業(yè)出版社 2006.4</p><p> 5.張虹 《軟件工程與軟件開發(fā)工具》[M] 清華大學(xué)出版社 2004.9</p><p> 6.汪翔、袁輝 《Visual c++實(shí)踐與提高 網(wǎng)絡(luò)編程
94、篇》[M] 中國鐵路出版2001</p><p> 7.趙松濤 《SQL Server 2000應(yīng)用與實(shí)例集錦》[M] 人民郵電出版社 1999</p><p> 8.姚領(lǐng)田《精通MFC程序設(shè)計(jì)》[M] 人民郵電出版社 2006</p><p> 9.清汗計(jì)算機(jī)工作室 《Visual C++6.0數(shù)據(jù)庫與網(wǎng)絡(luò)開發(fā)實(shí)例》[M] 機(jī)械工業(yè)出版社 2001</
95、p><p> 10.Kate Gregory 《Visual c++6開發(fā)使用手冊(cè)》[M] 機(jī)械工業(yè)出版1999</p><p> 11.Uyless Black,TCP/IP and Related Protocols[M],1995.</p><p> 12.Microsoft Developer N
96、etwork Library-Visual Studio 6.0[M],Microsoft Corporation,2001</p><p> 13.Jeff Prosise,Programming Windows with MFC[M],2000</p><p> 14.Michael J.Donahoo,Kenneth L.Calvert,
97、 TCP/IP Sockets in C, Second Edition: Practical Guide for Programmers[M],2000</p><p> 15.Haritaoglu I., Cutler R., Harwood D. and etc., Detection of People Carrying Objects using Silhouettes[C]. ICCV, 1999
98、, pp. 102-107</p><p><b> 致 謝</b></p><p> 在本文結(jié)束之際,首先要向我的導(dǎo)師姜毅老師致以崇高的敬意和衷心的感謝。老師在專業(yè)課程的學(xué)習(xí)、素材的收集、課題的確立、資料的查閱都給以的熱忱的關(guān)懷和細(xì)心的指導(dǎo)。老師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度、淵博的學(xué)識(shí)、對(duì)事業(yè)的兢兢業(yè)業(yè)、不斷進(jìn)取的精神,為我今后的生活及工作樹立了榜樣,我的點(diǎn)滴進(jìn)步無不凝結(jié)著
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 局域網(wǎng)即時(shí)通訊軟件設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 局域網(wǎng)即時(shí)通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 即時(shí)通訊系統(tǒng)---畢業(yè)論文
- 即時(shí)通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 畢業(yè)論文即時(shí)通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 局域網(wǎng)即時(shí)通信軟件畢業(yè)論文
- 基于Android平臺(tái)局域網(wǎng)即時(shí)通訊軟件的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 即時(shí)通訊畢業(yè)設(shè)計(jì)--企業(yè)內(nèi)部即時(shí)通訊系統(tǒng)的設(shè)計(jì)
- 基于java的android即時(shí)通訊軟件畢業(yè)論文
- 博網(wǎng)即時(shí)通訊軟件的設(shè)計(jì)與實(shí)現(xiàn)
- 基于qt的局域網(wǎng)跨平臺(tái)即時(shí)通信軟件 畢業(yè)論文
- 即時(shí)通訊聊天系統(tǒng) 畢業(yè)設(shè)計(jì)
- 畢業(yè)論文——基于bs方式的即時(shí)通訊軟件的設(shè)計(jì)與實(shí)現(xiàn)
- 基于bs方式的即時(shí)通訊軟件的設(shè)計(jì)與實(shí)現(xiàn)——畢業(yè)論文
- 即時(shí)通訊系統(tǒng)開題報(bào)告
- 基于bs方式的即時(shí)通訊軟件的設(shè)計(jì)與實(shí)現(xiàn)——畢業(yè)論文
- 基于c#的即時(shí)通訊軟件設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 畢業(yè)設(shè)計(jì)---jqq即時(shí)通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 即時(shí)通訊工具畢業(yè)設(shè)計(jì)
- 網(wǎng)絡(luò)即時(shí)通訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
評(píng)論
0/150
提交評(píng)論