版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 本科畢業(yè)論文</b></p><p><b> (20 屆)</b></p><p> 局域網(wǎng)內(nèi)終端運行信息管理系統(tǒng)的設(shè)計與實現(xiàn)</p><p> Design and Implementation of LAN Terminal</p><p> Opera
2、tion Information Management Systems</p><p><b> 摘要</b></p><p> 目前,互聯(lián)網(wǎng)絡(luò)技術(shù)正處于在不斷的發(fā)展與進步之中。計算機網(wǎng)絡(luò)的相關(guān)技術(shù)得到了越來越多的應(yīng)用,同時計算機的數(shù)量也增多了很多?,F(xiàn)在很多的企業(yè)之間都存在著各種或大或小的競爭力,所以企業(yè)若想要提高競爭力就必須在內(nèi)部完成對數(shù)據(jù)的集成和共享。除此之外
3、比較重要的一點就是要對自己企業(yè)內(nèi)部的設(shè)備要進行實時的監(jiān)督、控制與管理,保證它們時刻處在健康正常的工作狀態(tài),這是企業(yè)局域網(wǎng)建設(shè)的重中之重。但是,對局域網(wǎng)的管理和維護變得越來越不容易,這無形之中給管理人員增加了許多壓力。</p><p> 根據(jù)以上現(xiàn)狀設(shè)計開發(fā)了基于C/S架構(gòu)的局域網(wǎng)的終端運行信息管理系統(tǒng)。本系統(tǒng)本著方便管理員管理的目的,能夠采集局域網(wǎng)內(nèi)終端的運行信息,包括計算機的硬件信息和軟件運行情況。在設(shè)計局域
4、網(wǎng)內(nèi)終端運行信息管理系統(tǒng)的過程中,采用VS2010開發(fā)平臺和C++開發(fā)語言,設(shè)計了一個人性化的用戶可操作的界面。</p><p> 本文嚴(yán)格按照軟件工程的原理,對局域網(wǎng)內(nèi)終端運行信息管理系統(tǒng)的系統(tǒng)需求分析、系統(tǒng)設(shè)計、系統(tǒng)實現(xiàn)以及系統(tǒng)測試等階段作了詳細的闡述。本系統(tǒng)基于C/S模式開發(fā),還實現(xiàn)了服務(wù)器對客戶端的遠程控制功能,經(jīng)過實際的測試,上述功能順利完成。</p><p> 關(guān)鍵詞:局域
5、網(wǎng);信息管理;終端;遠程控制</p><p><b> ABSTRACT</b></p><p> Nowadays, with the development of Internet technology the relevant technology of the computer network has been used more and more, wh
6、ile the number of computers has greatly increased at the same time. Some competitiveness, small or big, existed in many enterprises. Hence if the enterprises want to enhance their competitiveness, the data integration an
7、d sharing must be done internally.In addition, the more important is to real-time monitor, control and manage the internal equipment of the enterpr</p><p> Based on the above situation, this paper designed
8、and developed the terminal operation information management system based on LAN. In order to make it more convenient for the managers to manage the terminal operation situation, collect the terminal network operation inf
9、ormation,which includes computer hardware information and software running situation. In the process of designing the local area network (LAN) terminal operation system, VS development platform and C++ language are used
10、to design </p><p> Strict in accordance with the principle of software engineering, this paper elaborates the system requirements analysis, system design, system implementation and system test phase of the
11、terminal operation information management system within the local area network (LAN) in detail. Based on C/S model development, the system gains the function of the remote control of the server to the client at the same
12、time. after the actual test, the functions above have been completed smoothly.</p><p> Key words: LAN; information management; terminal; remote control</p><p><b> 目 錄</b></p>
13、;<p><b> 第1章 緒論4</b></p><p> 1.1 課題研究背景及意義4</p><p> 1.2 課題相關(guān)國內(nèi)外研究現(xiàn)狀4</p><p> 1.3 主要研究內(nèi)容5</p><p> 1.4 論文結(jié)構(gòu)6</p><p> 第2章 相關(guān)技術(shù)7
14、</p><p> 2.1 Visual Studio和C++簡介7</p><p> 2.1.1 Visual Studio簡介7</p><p> 2.1.2 C++簡介7</p><p> 2.2 MFC介紹8</p><p> 2.2.1 MFC簡介8</p><p>
15、; 2.2.2 MFC的虛擬函數(shù)和動態(tài)約束9</p><p> 2.2.3 MFC的優(yōu)點9</p><p> 2.4 本章小結(jié)10</p><p> 第3章 需求分析11</p><p> 3.1 可行性研究11</p><p> 3.1.1 技術(shù)可行性分析11</p><p
16、> 3.1.2 經(jīng)濟可行性分析12</p><p> 3.1.3 管理可行性分析12</p><p> 3.1.4 開發(fā)環(huán)境可行性分析12</p><p> 3.1.5 操作可行性分析12</p><p> 3.2 開發(fā)設(shè)計思想12</p><p> 3.3 功能需求分析13</p&
17、gt;<p> 3.3.1 主要功能13</p><p> 3.3.2 性能需求13</p><p> 3.4 本章小結(jié)13</p><p> 第4章 系統(tǒng)的總體設(shè)計與實現(xiàn)16</p><p> 4.1 信息采集模塊的設(shè)計與實現(xiàn)16</p><p> 4.1.1 計算機信息采集的具體
18、實現(xiàn)16</p><p> 4.1.2 信息采集模塊主界面設(shè)計20</p><p> 4.2 數(shù)據(jù)傳輸功能模塊的設(shè)計21</p><p> 4.2.1 Socket概念22</p><p> 4.2.2 Socket工作原理23</p><p> 4.2.3 Socket分類23</p>
19、;<p> 4.2.4 Socket連接與TCP連接24</p><p> 4.3 遠程控制功能模塊設(shè)計25</p><p> 4.3.1 網(wǎng)絡(luò)模塊設(shè)計25</p><p> 4.3.2 編碼/解碼模塊設(shè)計25</p><p> 4.3.3 對話框模塊設(shè)計29</p><p> 4.
20、4本章小結(jié)32</p><p> 第5章 系統(tǒng)測試34</p><p> 5.1 測試的目的34</p><p> 5.2 測試的步驟34</p><p> 5.2 測試的過程35</p><p> 5.3 測試的結(jié)果35</p><p> 5.5 測試的分析35<
21、;/p><p> 5.6 本章小結(jié)36</p><p><b> 結(jié)論37</b></p><p><b> 參考文獻38</b></p><p> 攻讀學(xué)士學(xué)位期間發(fā)表的論文和取得的科研成果41</p><p><b> 致謝42</b>
22、;</p><p><b> 第1章 緒論</b></p><p> 1.1 課題研究背景及意義</p><p> 隨著計算機網(wǎng)絡(luò)技術(shù)的快速發(fā)展,互聯(lián)網(wǎng)絡(luò)已經(jīng)擴撒到全世界的范圍,許多規(guī)模相對較大的企業(yè)都建立了屬于自己的辦公網(wǎng)絡(luò),工作效率得到了顯著提高,但與此同時廣大用戶對計算機網(wǎng)絡(luò)產(chǎn)生一定的依賴性。隨著電子信息技術(shù)快速迅猛的發(fā)展,網(wǎng)絡(luò)上也
23、出現(xiàn)了許多安全隱患問題。企業(yè)的本地網(wǎng)絡(luò)如果受到外部的入侵,將會給企業(yè)帶來不可估量的損害。因為外部入侵很有可能攻擊到企業(yè)的服務(wù)器或者數(shù)據(jù)庫等重要部位,那么企業(yè)的機密信息和資料有可能落到外部人員手中,這樣企業(yè)在未來的競爭之中很有可能落到下風(fēng),極大的削弱了企業(yè)的競爭力,所以對于企業(yè)內(nèi)部局域網(wǎng)的安全必須進行有效加固,隨時監(jiān)控企業(yè)局域網(wǎng)絡(luò)中終端上軟件運行情況與硬件信息。因此,解決網(wǎng)絡(luò)安全問題迫在眉睫。</p><p>
24、另一方面,網(wǎng)絡(luò)結(jié)構(gòu)變得越發(fā)的復(fù)雜,如何做到高效的管理企業(yè)內(nèi)部的局域網(wǎng)絡(luò),提高設(shè)備的利用率、檢測出需要維修設(shè)備的問題、提高員工的工作效率、降低管理人員工作的復(fù)雜程度,也成為了大多數(shù)企業(yè)急需解決的問題。要想提高企業(yè)的競爭力,打造高水平的產(chǎn)品,不僅需要有一定的基礎(chǔ)設(shè)備的支持,公司員工的專業(yè)水平與職業(yè)素養(yǎng)也尤為重要。在企業(yè)各個部門團隊中,員工們各司其職,每天都要長時間面對無聊的工作任務(wù),難免是產(chǎn)生疲倦心理,可能有些團隊意識有待提高的員工會在工作
25、時間偷懶,做一些與工作任務(wù)無關(guān)的事情,比如說上網(wǎng)查看新聞、觀看一些娛樂視頻、玩網(wǎng)頁游戲等等。看起來這些都不算什么大事,但是一旦擴散便會對企業(yè)造成巨大的損失。因此有些情況下對員工的工作設(shè)備進行實時的管理和控制也是十分必要的。</p><p> 雖然近年來,局域網(wǎng)絡(luò)的安全性無論在國內(nèi)還是國外都受到了特別的重視,但是有些現(xiàn)象的發(fā)生仍然令人堪憂,對營造良好健康的競爭環(huán)境有很大的害處,對市場的網(wǎng)路安全發(fā)展也產(chǎn)生了及其巨大
26、的阻礙。信息管理終端的操作不僅僅局限于是對網(wǎng)絡(luò)設(shè)備上的監(jiān)控,它已經(jīng)成為企業(yè)在信息化管理系統(tǒng)的不可或缺的一部分,企業(yè)要最大限度的控制網(wǎng)絡(luò)管理一體化的進程,所以本課題局域網(wǎng)內(nèi)終端運行信息管理系統(tǒng)的設(shè)計與實現(xiàn)意義重大。</p><p> 1.2 課題相關(guān)國內(nèi)外研究現(xiàn)狀</p><p> 計算機領(lǐng)域中已經(jīng)進行了一場又一場的技術(shù)革命,它給我們提供了低成本的通信方式,而且質(zhì)量和效率變得更高,使我們
27、的生活完全進入了信息化的大時代。局域網(wǎng)內(nèi)終端運行信息管理系統(tǒng)也由原始的模擬監(jiān)控發(fā)展到了實時化與信息化。</p><p> 局域網(wǎng)內(nèi)終端運行信息管理系統(tǒng)已經(jīng)受到了廣大民眾的青睞,在各個領(lǐng)域已經(jīng)得到了極為廣泛的應(yīng)用,因為它不僅可以查看局域網(wǎng)內(nèi)終端的工作情況,還能實行遠距離監(jiān)視和遠程控制。對此系統(tǒng)的研究也一定會帶來巨大的經(jīng)濟收益?,F(xiàn)在國內(nèi),很多的高校和企業(yè),還有一些對軟件開發(fā)具有激情的愛好者也陸續(xù)開發(fā)了很多類似功能的
28、系統(tǒng)。它們的開發(fā)給企業(yè)的發(fā)展產(chǎn)生了巨大的好處,為企業(yè)提供了很好的監(jiān)控管理設(shè)施。這樣既可以使員工的工作效率得到提高,也能使員工的工作行為更加規(guī)范,這樣企業(yè)的經(jīng)濟效益也會有明顯的提高。伴隨著社會上各個部門的研究,此類軟件系統(tǒng)正在一步步走向完善。國內(nèi)市場上已經(jīng)推出的兩種產(chǎn)品主要分為模擬視頻控制和數(shù)字視頻控制。前者性能較為穩(wěn)定,技術(shù)成熟,因此已經(jīng)在應(yīng)用在實際的工作之中;而后者目前正處在一個剛剛起步的階段,雖然可以解決一些模擬系統(tǒng)上存在的弊端,但
29、是還需要進一步的完善和發(fā)展。</p><p> 局域網(wǎng)內(nèi)終端運行信息管理監(jiān)控軟件的使用越來越簡單,價格也越發(fā)的合理,為廣大用戶所接受,因此這類軟件越來越具有吸引力。美國管理協(xié)會早在2003年曾對一些公司做過調(diào)查,統(tǒng)計結(jié)果顯示,被調(diào)查的公司中有大約百分之七十已經(jīng)開始對員工進行網(wǎng)上行為的監(jiān)控和管理。另有一項調(diào)查顯示,其中大約有百分之二十六的企業(yè)是借助局域網(wǎng)管理系統(tǒng)來監(jiān)視員工的。可以看出,此類軟件價值極高,他們有利于
30、提高企業(yè)的安全性,減少競爭性信息的泄露并降低法律風(fēng)險。分析人士表明,考慮使用管理監(jiān)控軟件最符合企業(yè)的利益,但是前提要在員工的信任與不信任之間取得恰當(dāng)?shù)钠胶狻?lt;/p><p> 局域網(wǎng)內(nèi)終端運行信息管理系統(tǒng)具有良好的市場前景,因為無論國內(nèi)還是國外,家庭辦公、遠程技術(shù)、遠程教學(xué)都逐漸的發(fā)展起來。以后,各種公司的規(guī)模會不斷擴大,工作地點可能都不在同一個辦公樓,甚至不在同一個成熟也成為可能,控制和規(guī)范員工的工作行為變得
31、越來越難。以前某些公司利用攝像頭進行監(jiān)控,但是這根本不能把監(jiān)控范圍具體到計算機桌面上,根本無法知道員工是否在進行與工作相關(guān)的工作。而局域網(wǎng)內(nèi)終端運行信息管理系統(tǒng)可以完成上述功能,能夠采集到計算機進程的運行信息,實行遠程監(jiān)控和遠程控制,解決了如此多的細節(jié)問題,國內(nèi)外相關(guān)人士的研究將對此系統(tǒng)的發(fā)展帶來很大的推動作用。</p><p> 1.3 主要研究內(nèi)容</p><p> 本設(shè)計初步建立
32、一套基于計算機的運行信息采集管理系統(tǒng),該系統(tǒng)能夠獲取局域網(wǎng)內(nèi)終端的信息,并在服務(wù)器端分類展示與匯總,包括軟件運行信息和硬件信息。例如,獲取計算機的名稱和IP地址,獲取子網(wǎng)掩碼、DNS信息、網(wǎng)卡信息、安裝協(xié)議、提供的服務(wù)和注冊表信息;采集包括計算機的基礎(chǔ)性能數(shù)據(jù)如CPU信息、OS版本、主板信息、硬件溫度、內(nèi)存使用率、硬盤使用率、BIOS相關(guān)參數(shù)等;能夠獲取正在終端上運行的軟件或者進程的使用狀態(tài)等。將上述提到的信息傳送給服務(wù)器端,再清晰地、
33、合理地展示出來。同時兩端成功連接之后,服務(wù)器端便可以對客戶端的計算機進行遠程監(jiān)視和控制。</p><p> 設(shè)計的初級階段,我利用電腦在網(wǎng)上查閱了一些與設(shè)計有關(guān)的資料,了解了一些與課題研究有關(guān)的技術(shù)。本次畢業(yè)設(shè)計是采用C++語言進行開發(fā)的,開發(fā)工具的版本是VS 2010版本。本次課題設(shè)計中信息采集功能的完成需要用到MFC框架來實現(xiàn),客戶端與服務(wù)器端間的通信是利用套接字的編程方法完成。將客戶端模塊與服務(wù)器端模塊進
34、行有效的連接,實現(xiàn)端對端的實時通信。</p><p> 設(shè)計的中期工作是對功能的補充和完善。這里要實現(xiàn)服務(wù)器對客戶端的遠程監(jiān)視和遠程操控。這一模塊的完成需要用到圖像傳輸相關(guān)知識,要準(zhǔn)備一些與數(shù)據(jù)壓縮相關(guān)的理論知識,需要對霍夫曼編碼和RLE編碼有一定的了解。這些工作都是用來對本次設(shè)計功能的完善。</p><p> 設(shè)計的后期工作主要是進行一些必要測試工作,在處于局域網(wǎng)內(nèi)的兩臺計算機上運行
35、程序來測試設(shè)計完成的功能,找出不足之處進行改進,使本次設(shè)計在反復(fù)不斷的測試之中得到完善。</p><p><b> 1.4 論文結(jié)構(gòu)</b></p><p> 本文主要闡述了局域網(wǎng)內(nèi)終端運行信息系統(tǒng)的設(shè)計與實現(xiàn)。</p><p> 第1章是緒論部分。闡述了本次課題的來源、本課題在國內(nèi)與國外的研究現(xiàn)狀、本課題研發(fā)的背景目的和意義。同時也概述
36、了本論文的主要內(nèi)容和組織結(jié)構(gòu)。</p><p> 第2章是設(shè)計中需要用到的相關(guān)技術(shù)的介紹。包括對系統(tǒng)開發(fā)語言和開發(fā)環(huán)境的介紹、對MFC框架知識的介紹。</p><p> 第3章是對本次課題進行合理的需求分析。對本次畢業(yè)設(shè)計進行可行性研究分析、開發(fā)設(shè)計思想分析以及功能需求分析。</p><p> 第4章是系統(tǒng)的總體設(shè)計和實現(xiàn)過程。介紹了本次設(shè)計中各個模塊的功能以
37、及實現(xiàn)過程,同時粘貼了系統(tǒng)運行的重要界面圖形。</p><p> 第5章是本系統(tǒng)的測試部分,介紹了本次系統(tǒng)的測試方法、測試過程和測試結(jié)果。</p><p> 最后是總結(jié)部分,對本次畢業(yè)設(shè)計進行相對全面的總結(jié)。</p><p><b> 第2章 相關(guān)技術(shù)</b></p><p> 這一章將會對本次系統(tǒng)的開發(fā)環(huán)境和相
38、關(guān)技術(shù)進行簡要介紹,分別包括對Visual Studio和C++的介紹和對MFC框架知識的介紹。</p><p> 2.1 Visual Studio和C++簡介</p><p> 2.1.1 Visual Studio簡介</p><p> Visual Studio的功能十分的強大,它是微軟公司開發(fā)出來的,可以在Windows上運行的一款效率很高的軟件開發(fā)
39、工具,它是程序員開發(fā)軟件的首要選擇之一。此款軟件具有著可視化集成開發(fā)環(huán)境,將編譯,鏈接和調(diào)試等都容于一體[10]。這給軟件開發(fā)人員的工作提供了較大的便利之處,是軟件開發(fā)道路上的一個重要的里程碑。</p><p> VS2010的語言既豐富又簡潔,相比于之前的版本增加了許多新的功能,也加入了特別多的新鮮特性,這將會給編程帶來了極大的方便,是一款值得開發(fā)人員信任的開發(fā)工具。使用VS可以高效開發(fā)Windows應(yīng)用。但
40、與此同時它帶來的好處可不止如此,它能夠支持項目模板、調(diào)試器和部署程序等。程序員利用VS開發(fā)Web應(yīng)用或者Office應(yīng)用都能夠達到更高的效率,實現(xiàn)的功能也更加穩(wěn)定。</p><p> VS的應(yīng)用程序向?qū)Ю锩婧w了一些框架代碼,當(dāng)程序員進行開發(fā)工作的時候,不再需要再向最原始的方式一樣一行一行地將代碼敲進編譯器。他們現(xiàn)在完全可以利用編譯器中內(nèi)置的框架代碼進行編程,僅僅通過選擇幾個特定的按鈕就可以完成大量的功能,生成
41、的都是一些完整的程序,所以不需擔(dān)心程序不能正常運行,這為工作人員開發(fā)軟件提供了極大的方便。VS能夠完成從底層軟件直到上層直接面向用戶的軟件的開發(fā)工作。而且,它具有著強大的調(diào)試功能,對于復(fù)雜的軟件開發(fā)有高效的排錯手段,目前它已經(jīng)成為全世界應(yīng)用最廣泛的開發(fā)工具之一。</p><p> 2.1.2 C++簡介</p><p> VS只是一個C++集成開發(fā)環(huán)境,它在C++編程語言和C++的基礎(chǔ)
42、上,增加了MFC(微軟基礎(chǔ)類庫)。C++的開發(fā)是以在它之前的C語言為基礎(chǔ)的,所以它也保留了類似于C語言的某些特征和功能。不同的是,C++支持面向?qū)ο蟪绦虻脑O(shè)計思想,這是對C語言進行的更好的完善。C++最初開發(fā)的主要目標(biāo)是做一個更好的C語言,因此要杜絕在C語言中存在的問題。增加許多新功能是C++開發(fā)時期的另一個目標(biāo)。C語言在剛剛發(fā)展的最初時期只是被叫做“帶類的C語言”。在不斷發(fā)展的過程中,它有了新的命名形式,也就是現(xiàn)在所說的C++。<
43、;/p><p> 在IT技術(shù)飛速發(fā)展的過程中,程序開發(fā)語言發(fā)展速度尤為突出,C++相比于其他的語言還是有很多優(yōu)點的,無論是在性能上還是在效率上。我們都知道,C++的代碼在最后會被編譯成為本地的機器碼,這樣的代碼是可以由CPU直接運行的,而有些語言需要生成中間代碼之后再由虛擬機進行執(zhí)行工作,有些語言又需要用到腳本引擎來解析腳本語言,所以說這類語言運行的效率相對于C++來說一般較低。C++的另一個優(yōu)勢就是前面提到的面向
44、對象特性,這種特性有效的解決了代碼的重用、重構(gòu)、修改和擴展所帶來的麻煩[1][11]。由于C++的功能模塊都是被封裝在一個類中的,這樣使用起來就方便的很,因為我們根本沒有必要知道怎么實現(xiàn)的功能,只需要知道一些基礎(chǔ)的東西,比如說會調(diào)用所需要的類的方法,這樣便極大的減小了程序開發(fā)的周期,更方便的是還可以把類派生起來,這樣可以使模塊的功能得到響應(yīng)的拓展,與此同時這對原來的功能是沒有一點影響的。</p><p> C+
45、+在運行程序時也會出現(xiàn)錯誤,但是它的優(yōu)勢就在于它本身是存在處理異常的機制的。這種機制能夠很好的捕捉程序中的異常代碼,這樣幫我們節(jié)省了大量的查找錯誤的時間。除了異常處理機制外,C++編譯器還在編譯時提供了類型檢查和分析功能,幫助我們查找出許多的各種各樣的錯誤類型。</p><p><b> 2.2 MFC介紹</b></p><p> 2.2.1 MFC簡介<
46、/p><p> MFC是微軟公司提出的一個基本類庫,許多已經(jīng)被定義好的對象的類都包含在該類庫中。微軟公司為什么要開發(fā)這個類庫,然后將諸多開發(fā)程序所需要用到的對象含在里面呢?程序員在開發(fā)程序的時候用到的方法不盡相同,開發(fā)的程序的功能更不可能一樣。但是需要注意,開發(fā)程序的主要方面大體上有幾個方面。例如需要對文件進行操作,對多媒體進行使用,有時還需要訪問數(shù)據(jù)庫,還有就是設(shè)計用戶界面等。但是自從有了MFC類庫,我們的編程就
47、方便了很多,只需要調(diào)用類庫中已有對象的方法,因為類庫中的對象就能完成我們想要達到的要求。我們利用面向?qū)ο蟪绦蛟O(shè)計“繼承”的特點,可以根據(jù)類庫中已有對象派生出屬于我們的專用對象。這些對象除了擁有基本功能外,還會根據(jù)我們的需要增加新的特性。</p><p> 面向?qū)ο蟮脑O(shè)計思想在MFC的編程方法上得到充分的利用,這使得程序員無需再思考程序的一些細節(jié)部分,既節(jié)省了時間又節(jié)省了精力。該類庫中的對象已經(jīng)擁有了十分完善的功
48、能,所以我們在程序設(shè)計的時候也沒有必要編寫更多的代碼。MFC類庫的代碼具有極高的可靠性,里面各種對象的屬性和方法都不是輕易得來的,而是經(jīng)過認真的編寫與改進,經(jīng)過嚴(yán)格的調(diào)試完成的,所以不用擔(dān)心使用該類庫會對程序的正確性有所影響。</p><p> 2.2.2 MFC的虛擬函數(shù)和動態(tài)約束</p><p> MFC是以“C++”為基礎(chǔ)的,所以它同樣也會對虛擬函數(shù)和動態(tài)約束提供相應(yīng)的支持,但是
49、它同時又是編程時可以用到的一個框架,假如僅僅是利用虛擬函數(shù)對動態(tài)約束提供支持,那么無可厚非會產(chǎn)生很嚴(yán)峻的問題。它會使虛擬函數(shù)表變得十分的臃腫,同時也會占用巨大的內(nèi)存,從而使效率變得更低。但是有些時候需要把過多的成員函數(shù)改設(shè)計成為虛擬函數(shù),實現(xiàn)這樣的任務(wù)看起來會十分困難,不方便使用,但是這個問題又是必須得到有效的解決,因此MFC找到了一種極其高效又極其方便的解決方案,那便是建立消息映射機制,這樣就可以為編程人員提供更多的編程接口。<
50、/p><p> 2.2.3 MFC的優(yōu)點</p><p> 對于熟練掌握windows編程的人來說,尤其是對有過使用傳統(tǒng)windows編程方法開發(fā)經(jīng)歷的人來說,會有一種感受,開發(fā)一種應(yīng)用程序的過程是及其復(fù)雜的,需要有很豐富的理論知識和開發(fā)經(jīng)驗。不論是待開發(fā)程序多么簡單,仍然要求編程人員擁有較高的編程能力和理論基礎(chǔ),同時還需要用手工編寫大量代碼。因為開發(fā)軟件時會出現(xiàn)各類錯誤,隨著代碼長度增加
51、,出錯率也會承幾何級數(shù)增長[2]。因此沒有扎實的基礎(chǔ)和編程能力是無法進行傳統(tǒng)的Windows編程的,但是MFC類庫的出現(xiàn),給Windows編程帶來了極大的方便。</p><p> API和驅(qū)動程序資料是以C語言為基礎(chǔ),對于底層的程序來說,MFC能夠在自己的代碼中直接使用API函數(shù),所以MFC的程序員對于Windows API的使用更方便 [18]。對于一個新手來說入門可能比較困難,但是達到了一定水平之后再開發(fā)其
52、他領(lǐng)域的軟件時,VC的編程人員就可以迅速的掌握這個領(lǐng)域中需要用到的技術(shù)了。對于MFC的學(xué)習(xí),一旦上手便可以輕松的進行擴展學(xué)習(xí)。這說明,如果我們想要在新的領(lǐng)域開發(fā)程序的時候,或者是開發(fā)涉及到很多領(lǐng)域的程序的時候,毫無疑問,它的確是個不錯的選擇。</p><p><b> 2.4 本章小結(jié)</b></p><p> 本章針對該系統(tǒng)需要實現(xiàn)的功能以及開發(fā)過程中需要使用的
53、工具和技術(shù)做了闡述,具體提到了Visual Studio 2010這個開發(fā)工具,同時也包含了C++的語言介紹。除此之外對MFC又進行了大量的敘述,我們知道MFC對于windows編程來說十分重要,而且相對于一些其他方法還有很突出的優(yōu)勢。這些理論知識的學(xué)習(xí)和積累為接下來各章關(guān)于系統(tǒng)的設(shè)計與實現(xiàn)做了技術(shù)上的鋪墊與支持。</p><p><b> 第3章 需求分析</b></p>
54、<p> 需求分析是以市場運作中的業(yè)務(wù)定義為基礎(chǔ),它在軟件工程中非常重要[13]。從開發(fā)工作的流程來看,需求分析是軟件計劃的下一工作步驟,它為軟件的設(shè)計階段提供一個軟件需求規(guī)格說明書。如果說我們想要開發(fā)一個軟件卻搞錯了需求只能是事倍功半,甚至完不成任務(wù)。因此我們要知道課題需要弄清需要解決什么問題,要得到什么結(jié)果任務(wù)是否可行等。</p><p> 然而需求的獲取卻不是一件簡單容易的事情,這可是要花費大
55、量時間與精力認真來完成的。為什么呢,原因很簡單。首先,用戶的需求經(jīng)常都是有很大的動態(tài)性的,也就是我們經(jīng)常說的不穩(wěn)定性。而且用戶需求也具有一定的模糊性,也就是我們常說的不準(zhǔn)確性。這些因素會給需求的獲取帶來巨大的困難。除此之外要想對需求達成一致也具有一定的艱難性,同時管理體制和機構(gòu)設(shè)置也處在變革之中。因此種種原因表明需求的獲取是一件十分艱巨的任務(wù),但是也確實是一項必不可少的任務(wù)。</p><p><b>
56、 3.1 可行性研究</b></p><p> 3.1.1 技術(shù)可行性分析</p><p> 技術(shù)上可行性分析主要是是對現(xiàn)有技術(shù)條件進行分析,判斷開發(fā)環(huán)境是否合格。本次設(shè)計所用到的技術(shù)早在很久之前就已經(jīng)存在,而且在網(wǎng)絡(luò)技術(shù)發(fā)展如此迅速的今天不僅未被淘汰,反而在更廣泛的領(lǐng)域得到了應(yīng)用。雖然某些相關(guān)技術(shù)可能會受到網(wǎng)絡(luò)技術(shù)的制約,但是本系統(tǒng)的設(shè)計在局域網(wǎng)中是可以實現(xiàn)的。在此采用P
57、4以上的計算機作為工作臺,其容量、速度均能滿足開發(fā)者需要。擁有較為專業(yè)的開發(fā)人員,熟悉開發(fā)語言和開發(fā)工具,有一定的基礎(chǔ)知識的積累,能夠勝任本次課題的開發(fā)工作。本系統(tǒng)采用C++作為編程語言,而VS更是較為高效開發(fā)工具之一。綜上,本次系統(tǒng)的開發(fā)與設(shè)計在技術(shù)上是可行的。</p><p> 3.1.2 經(jīng)濟可行性分析</p><p> 使用Windows操作系統(tǒng)、Microsoft Visua
58、l Studio 2010開發(fā),開發(fā)工具免費使用,因此本系統(tǒng)較為廉價,可以用較少的成本開發(fā)本系統(tǒng)。而且本系統(tǒng)的設(shè)計是由個人獨立完成,可以節(jié)省許多費用。綜上,本系統(tǒng)的設(shè)計在經(jīng)濟上是可行的。</p><p> 3.1.3 管理可行性分析</p><p> 隨著目前信息化的普及,用戶大都擁有基本的計算機知識,對網(wǎng)絡(luò)知識都有了一定的了解,無論是對于電腦系統(tǒng)的基本操作還是維護都有一定的基礎(chǔ)。同時
59、,還可以配置專業(yè)的指導(dǎo)手冊來幫助電腦的維護,因此不用擔(dān)心電腦故障。</p><p> 3.1.4 開發(fā)環(huán)境可行性分析</p><p> 本次系統(tǒng)的設(shè)計采用的開發(fā)工具是Microsoft Visual Studio 2010,它可以在大多數(shù)電腦上安裝并進行使用。Microsoft Visual Studio 2010內(nèi)部提供了大量控件,即豐富了應(yīng)用程序的表達能力,又加快了開發(fā)速度。<
60、;/p><p> 在硬件系統(tǒng)的要求方面,Windows XP系統(tǒng)及其以上版本的計算機,內(nèi)存在1G以上,硬盤160GB以上都能滿足系統(tǒng)開發(fā)的需求。當(dāng)然,如果擁有更好的配置,系統(tǒng)運行的也會變得更加流暢。從目前主流的計算機配置來講,都能達到這個要求,所以在硬件方面是可行的。</p><p> 3.1.5 操作可行性分析</p><p> 操作可行性指的是系統(tǒng)的機構(gòu)能夠獨
61、立,穩(wěn)定,安全的運行,并且符合局域網(wǎng)內(nèi)終端運行信息管理的需求以及適應(yīng)社會發(fā)展的要求,運用本系統(tǒng)能夠幫助用戶實現(xiàn)各類數(shù)據(jù)之間的相互轉(zhuǎn)換工作,提高管理者的工作效率和準(zhǔn)確性,降低工作的難度,而且節(jié)約了成本。</p><p> 綜合以上的分析,本次畢業(yè)設(shè)計的開發(fā)是可行的。</p><p> 3.2 開發(fā)設(shè)計思想</p><p> 利用企業(yè)現(xiàn)有的軟件環(huán)境,在大多數(shù)現(xiàn)有的
62、計算機上就能運行該軟件,節(jié)約成本。系統(tǒng)要符合局域網(wǎng)內(nèi)終端運行信息管理要求,滿足局域網(wǎng)內(nèi)終端運行信息管理的需要,努力做到使該系統(tǒng)的操作過程更直觀、方便、實用和安全。</p><p> 本系統(tǒng)應(yīng)用MFC、套接字、數(shù)據(jù)壓縮等相關(guān)技術(shù)實現(xiàn),在客戶端采集計算機的部分信息,通過進程間的通信將采集到的數(shù)據(jù)在服務(wù)器端進行合理的展示,并可以根據(jù)管理需要進行相應(yīng)的操作。本系統(tǒng)在服務(wù)器端可對客戶端進行實時監(jiān)控,可以根據(jù)管理需要對客戶
63、端計算機桌面進行遠程控制。</p><p> 本系統(tǒng)采用模塊化的設(shè)計方法,這樣既能夠有利于開發(fā),又可以有利于軟件功能的拓展和維護。</p><p> 3.3 功能需求分析</p><p> 3.3.1 主要功能</p><p> 通過調(diào)研后分析出本系統(tǒng)要達到的功能如下:本系統(tǒng)能夠?qū)钟蚓W(wǎng)內(nèi)終端的運行情況進行采集,匯總并合理地展示,包括
64、計算機的硬件信息和軟件運行狀態(tài)。例如,獲取計算機的名稱和IP地址,獲取子網(wǎng)掩碼、DNS設(shè)置、網(wǎng)卡地址、安裝協(xié)議和提供的服務(wù)和注冊表信息等??梢詫⒂嬎銠C的基礎(chǔ)性能數(shù)據(jù)如CPU信息、OS版本、主板信息、硬件溫度、內(nèi)存使用率、硬盤使用率、BIOS相關(guān)參數(shù)等。獲取正在運行的軟件和進程使用情況等。將這些信息分類的展現(xiàn)給用戶,同時可以對采集的信息進行分析處理。除此之外要對客戶端的桌面進行實時的監(jiān)控,必要時可對其進行遠程控制,以便管理人員進行管理。&
65、lt;/p><p> 3.3.2 性能需求</p><p><b> 1) 數(shù)據(jù)精度</b></p><p> 對于系統(tǒng)要求輸入或者輸出的數(shù)據(jù),其精度嚴(yán)格按照設(shè)計要求。</p><p><b> 2) 時間特性要求</b></p><p> 一般而言,對于系統(tǒng)軟件運行時
66、的時間特性有如下要求:</p><p> ?。?)響應(yīng)時間:在用戶接受的時間范圍內(nèi)。</p><p> ?。?)更新處理時間:隨時更新。</p><p><b> 3.4 本章小結(jié)</b></p><p> IEEE的軟件工程標(biāo)準(zhǔn)詞匯表對軟件需求做了明確的定義。可見需求分析是個非常重要的概念。那么具體到開發(fā)中,需求分
67、析對軟件的影響有哪些呢?我們知道,有很多大型的軟件系統(tǒng)在開發(fā)過程中都沒有出現(xiàn)過大的問題,但是最終卻可能宣告失敗,這主要失誤應(yīng)該歸結(jié)到需求分析中。研究表明,需求分析占據(jù)了軟件開發(fā)工作量的百分之三十左右,此過程中產(chǎn)生的問題和錯誤一定會在整個設(shè)計中進行發(fā)散式的傳播,對軟件開發(fā)來說后果不堪設(shè)想。由此可以看出本章的工作在整個設(shè)計中是一個必不可少的環(huán)節(jié)。</p><p> 本章的任務(wù)主要是對本次設(shè)計進行了需求分析,包括經(jīng)濟
68、的可行性分析、技術(shù)的可行性分析、管理的可行性分析、開發(fā)環(huán)境的可行性分析和操作的可行性分析,完成了可行性研究報告,分析了開發(fā)設(shè)計思想,這些工作為系統(tǒng)的順利完成奠定了堅實的基礎(chǔ)。</p><p> 第4章 系統(tǒng)的總體設(shè)計與實現(xiàn)</p><p> 4.1 信息采集模塊的設(shè)計與實現(xiàn)</p><p> 一般情況下,客戶機與服務(wù)器是連接在因特網(wǎng)上的,然后我們也完全可以不在
69、因特網(wǎng)上把使客戶機和服務(wù)器進行連接,比如說利用本地的內(nèi)聯(lián)網(wǎng)。一般情況下內(nèi)聯(lián)網(wǎng)常常被用在學(xué)校計算機室的局域網(wǎng)和企業(yè)內(nèi)部的局域網(wǎng)中,并且使用分布式的應(yīng)用程序,而分布式的應(yīng)用程序宿主是本地計算機。所以,對本地計算機的配置信息以及網(wǎng)絡(luò)協(xié)議的正確獲取是一件很重要的事情,這對于編寫網(wǎng)絡(luò)應(yīng)用程序具有十分重要的用意。</p><p> 4.1.1 計算機信息采集的具體實現(xiàn)</p><p> 1)獲取計
70、算機的名稱和IP地址</p><p> 現(xiàn)在絕大多數(shù)的計算機中使用的都是IP地址,但是人們對IP地址的記憶并不直觀,無論對于因特網(wǎng)用戶還是對于內(nèi)聯(lián)網(wǎng)用戶,希望的都是使用主機名,這樣對于記憶更為方便和直觀。</p><p> 對于一臺本地計算機來說,計算機的名稱一般只會有一個,但是IP地址就不一定會這樣,因為它可能存在多個。比如說,當(dāng)本地計算機通過撥號上網(wǎng)的時候,一旦用戶名和密碼被驗證,
71、就會動態(tài)的分配一個IP地址給當(dāng)前計算機,這時候這個計算機就會同時擁有兩個IP地址。一個是提到的撥號上網(wǎng)之后被動態(tài)分配的IP地址,另一個則是在局域網(wǎng)內(nèi)自己設(shè)置的IP地址。</p><p> 我們可以利用WinSock庫來獲取本地計算機的主機名稱和IP地址。但是,我們在使用WinSock API之前需要調(diào)用WSAStartup函數(shù),當(dāng)該函數(shù)返回成功的時候,也就是應(yīng)用程序成功地與WinSock庫建立連接的時候,應(yīng)用程
72、序才可以調(diào)用Windows Sockets DLL中其他的函數(shù)。在程序要結(jié)束的時候,又必須要進行一定的清理工作,這時候需要調(diào)用WSACleanup函數(shù),該函數(shù)的作用是結(jié)束對Windows Sockets DLL的使用,以此用來釋放其占用的其他的資源。</p><p> 在Windows Socket庫中可以利用gethostname函數(shù)和gethostbyname函數(shù)獲取本地主機名。</p>&l
73、t;p> gethostname函數(shù)的函數(shù)原型如下:</p><p> int gethostname(</p><p> char* name,</p><p> int namelen</p><p><b> );</b></p><p> gethostbyname函數(shù)的
74、函數(shù)原型如下:</p><p> struct hostent*FAR gethostbyname</p><p><b> (</b></p><p> const char* name</p><p><b> );</b></p><p> 該函數(shù)可以從主機名
75、數(shù)據(jù)庫里面得到對應(yīng)的“主機”,它是由名字和地址來標(biāo)示的。</p><p> IP地址的獲取是通過gethostbyaddr函數(shù)實現(xiàn)的,它的函數(shù)原型如下:</p><p> struct HOSTENT* FAR gethostbyaddr</p><p><b> (</b></p><p> const cha
76、r* addr,</p><p><b> int len,</b></p><p><b> int type</b></p><p><b> );</b></p><p> 該函數(shù)的返回值也是一個hostent結(jié)構(gòu),這和gethostbyname函數(shù)較為類似,但也
77、有不同之處,這里傳遞的參數(shù)是已知網(wǎng)址。</p><p> 2)獲取計算機的子網(wǎng)掩碼</p><p> 在TCP/IP協(xié)議里面,子網(wǎng)掩碼主要是用來區(qū)分網(wǎng)絡(luò)上的主機是不是在一個相同的網(wǎng)段之內(nèi)。我們知道在大型的網(wǎng)絡(luò)里面,子網(wǎng)掩碼一般是分為三類。A類子網(wǎng)掩碼是255.0.0.0,B類子網(wǎng)掩碼是255.255.0.0,C類子網(wǎng)掩碼是255.255.255.0。</p><p&
78、gt; 函數(shù)GetAdaptersInfo可以獲得本地計算機的網(wǎng)絡(luò)信息,由此得到該計算機的子網(wǎng)掩碼,該函數(shù)在頭文件Iphlpapi.h中聲明,函數(shù)原型如下:</p><p> DWORD GetAdaptersInfo</p><p><b> (</b></p><p> PIP_ADAPTER_INFO pAdapterInfo,&
79、lt;/p><p> PULONG pOutBufLen</p><p><b> );</b></p><p> 參數(shù)中的IP_ADAPTER_INFO結(jié)構(gòu)里面包含了很多信息,大部分都是關(guān)于網(wǎng)絡(luò)適配器的,而在該結(jié)構(gòu)的成員變量里又定義了一個結(jié)構(gòu),即IP_ADDR_STRING,它代表了IP地址鏈表的一個節(jié)點,對其如下定義:</p>
80、<p> typedef struct_IP_ADDR_STRING</p><p><b> {</b></p><p> Struct_IP_ADDR_STRING*Next;</p><p> IP_ADDRES_STRING IpAddress;</p><p> IP_MASK_STRI
81、NG IpMask;</p><p> DWORD Context;</p><p><b> }</b></p><p> IP_ADDR_STRING,*PIP_ADDR_STRING;</p><p> 我們從上面可以看到一個叫做IpMask的成員變量,對應(yīng)的IP地址的子網(wǎng)掩碼就放置在這個成員變量中。<
82、;/p><p> 3)獲取計算機的DNS設(shè)置</p><p> DNS是一種用來區(qū)別互聯(lián)網(wǎng)或者互聯(lián)網(wǎng)上的主機而采用的一種層次結(jié)構(gòu)。它為了區(qū)別主機,采用更加簡單的、更加容易記憶的名稱取代了IP地址。它又可以通過把名稱解析到對應(yīng)的IP地址來定位主機。而且,它也是一種為了維護和存儲主機名稱與IP地址對應(yīng)列表的分布式機制[12]。</p><p> 我們想要獲取本地計算機
83、的NDS設(shè)置可以用到GetNetworkParams函數(shù)。因為它里面包括了許多網(wǎng)絡(luò)參數(shù)。它的函數(shù)原型如下:</p><p> DWORD GetNetworkParams</p><p><b> (</b></p><p> PFIXED_INFO pFixedInfo,</p><p> PULONG pOu
84、tBufLen</p><p><b> );</b></p><p> 我們從上面可以看到一個叫做FIXED_INFO的參數(shù),計算機所有的網(wǎng)絡(luò)接口中的相同信息都包含在其中,它有一個叫做DomainName的成員變量,是用來表示了本地計算機注冊的域名的。DnsServerList是IP_ADDR_STRING結(jié)構(gòu)列表,是本地計算機的DNS服務(wù)器設(shè)置。</p&
85、gt;<p> 4)獲取計算機的網(wǎng)卡地址</p><p> 程序在運行的時候,通常都會需要獲取當(dāng)前計算機的MAC地址,并將其作為某種標(biāo)識。我們想要獲取計算機的網(wǎng)卡地址有很多種方法。這有時候要根據(jù)計算機上已安裝的協(xié)議進行選擇。安裝了NetBEUI協(xié)議的計算機可以通過NetBIOS得到MAC地址。但是如果計算機上只有TCP/IP協(xié)議,就不能用上面的方法了,這就要用到IPHelper了。不過這還不夠,
86、我們還必須安裝平臺SDK,自己定義頭文件。</p><p> NetBIOS是一種標(biāo)準(zhǔn)的應(yīng)用程序編程接口,對目前狀況來說,全球已經(jīng)有很多的平臺和應(yīng)用程序都需要依賴于NebBIOS。我們可以把它的名字分為兩種類型,即唯一名字和組名[13][14]。顧名思義,“唯一名字”的意思就是說,它是獨一無二的,是只有一個的,意味著網(wǎng)絡(luò)上不可能再有其他任何進程能和它擁有相同的名字。比如說,如果一臺計算機已經(jīng)注冊了某一個名字,那
87、么當(dāng)其他的計算機再注冊名字的時候,如果選擇了和它一樣的名字,就會收到一條錯誤提示,提示名字出現(xiàn)了重復(fù)現(xiàn)象,表示這種現(xiàn)象是不被允許的。除此之外,隨名字一起,還能保存協(xié)議特有的某些信息。例如,在TCP/IP網(wǎng)絡(luò)中,WINS同時還維護著NETBIOS的名字和注冊該名字當(dāng)時保留著的那個IP地址。而“組名”起到的作用就是把數(shù)據(jù)同時發(fā)給很多個接收者,或者想法,它也可以接收發(fā)給多個接收者的數(shù)據(jù)。組名和唯一名字不同,它并不要求是獨一無二的,它主要是用于
88、多點發(fā)送數(shù)據(jù)通信[17]。計算機MAC地址的獲取可以和計算機的子網(wǎng)掩碼的獲取采用相同的函數(shù)來完成。</p><p> DWORD GetAdaptersInfo</p><p><b> (</b></p><p> PIP_ADAPTER_INFO pAdapterInfo,</p><p> PULONG p
89、OutBufLen</p><p><b> );</b></p><p> 網(wǎng)卡的MAC地址是被保存在Adapter變量中的。</p><p> 5)獲取當(dāng)前計算機內(nèi)存信息</p><p> 使用ComputerInfo類的公共屬性可以獲取當(dāng)前計算機的內(nèi)存信息。這些內(nèi)存信息主要包括物理內(nèi)存總和、可用物理內(nèi)存、虛
90、擬內(nèi)存總和與可用虛擬內(nèi)存。ComputerInfo類提供用于獲取與計算機的內(nèi)存、已加載程序集、名稱和操作系統(tǒng)有關(guān)信息的屬性[5]。該類常用的公共屬性如下:</p><p> 能夠獲取計算機物理內(nèi)存總量的TotalPhysicalMemory屬性;能夠獲取計算機可用物理內(nèi)存的AvailablePhysicalMemory屬性;能夠獲取計算機虛擬內(nèi)存總量的TotalVirtualMemory屬性;能夠獲取計算機可用
91、虛擬內(nèi)存總量的AvailableVirtualMemory屬性等。</p><p> 6)獲取當(dāng)前計算機安裝的協(xié)議</p><p> 可以通過WSAEnumProtocols函數(shù)來獲取在本地計算機上面安裝的可用網(wǎng)絡(luò)協(xié)議集。該函數(shù)的函數(shù)原型如下:</p><p> int WSAEnumProtocols</p><p><b>
92、; (</b></p><p> LPINT lpiProtocols,</p><p> LPWSAPROTOCOL_INFO lpProtocolBuffer,</p><p> LPDWORD lpdwBufferLength</p><p><b> );</b></p>&l
93、t;p> 其中參lpProtocolBuffer是以結(jié)構(gòu)WSAPROTOCOL_INFO填充的緩沖區(qū)。該結(jié)構(gòu)用來存取和獲得一個給定協(xié)議的完整信息。同時還可以調(diào)用函數(shù)getprotobynumber獲取對應(yīng)于給定協(xié)議名的相關(guān)協(xié)議信息。該函數(shù)的函數(shù)原型如下:</p><p> struct PROTOENT*FAR getprotobyname</p><p><b>
94、(</b></p><p> const char name</p><p><b> );</b></p><p> 4.1.2 信息采集模塊主界面設(shè)計</p><p> 登陸本系統(tǒng)時在用戶名和密碼下方會出現(xiàn)一個選項,可以選擇是在以客戶端或者服務(wù)器端的形式登陸本系統(tǒng)。下圖4.1為客戶端與服務(wù)器端的系
95、統(tǒng)登陸界面。</p><p> 圖4.1 系統(tǒng)登陸界面</p><p> 登陸本系統(tǒng)的時候,若是輸入了正確的用戶名和密碼后就會直接進入主界面。如果是以客戶端登陸本系統(tǒng),則會直接獲取本機的相關(guān)信息,成功登錄系統(tǒng)后進入系統(tǒng)主界面,在系統(tǒng)主界面里面,我們就可以清晰的看到本機的名稱和IP地址、子網(wǎng)掩碼、DNS設(shè)置、網(wǎng)卡地址、CPU信息、內(nèi)存使信息、頁面信息等。并在該界面設(shè)置了連接和發(fā)送兩個按鈕
96、,實現(xiàn)與終端連接及發(fā)送信息的功能。界面中還存在一個請求連接的按鈕,是進入遠程控制模塊的方式。下圖4.2為信息采集模塊主界面。</p><p> 圖4.2 信息采集模塊主界面</p><p> 4.2 數(shù)據(jù)傳輸功能模塊的設(shè)計</p><p> 一般情況下,局域網(wǎng)內(nèi)終端運行信息管理系統(tǒng)或軟件對信息的傳輸要求都是比較高的,因此必須通過TCP來實現(xiàn),因為TCP傳輸是一
97、種可靠的數(shù)據(jù)傳輸模式[15]。因為是TC程序,所以我們第一個想到的應(yīng)該是客戶端/服務(wù)器模式。本系統(tǒng)就是基于這個架構(gòu)進行設(shè)計的。建立分布式應(yīng)用時這是比較常用的。這種模式為了保證服務(wù)能在工作中被接受,需要有一套慣例可以同時讓客戶端和服務(wù)器來接受。而在這一套都被接受的慣例中包含著在兩端都能夠被實現(xiàn)的協(xié)議。協(xié)議是否需要對稱是根據(jù)不同的情況決定的。如果是對稱的協(xié)議,客戶端和服務(wù)器都可以是主要角色;如果是不對稱的協(xié)議,如果有一方對定義為了主機,那么
98、另一個就一定是從機,它們的角色是不可互換的。</p><p> 在一個客戶機對服務(wù)地址提出請求之前,服務(wù)的進程都是處于一個一直的休眠狀之中。此時的服務(wù)器被喚醒,服務(wù)程序開始打開,然后進行正常的服務(wù)工作,??蛻魴C/服務(wù)器的模型示意圖如圖4.3所示。</p><p> 圖4.3 客戶機/服務(wù)器模型示意圖</p><p> 客戶端與服務(wù)器間通過建立通信連接相互傳輸數(shù)
99、據(jù)。要完成本模塊的功能,需要了解套接字的工作原理以及它所支持的網(wǎng)絡(luò)協(xié)議。</p><p> 4.2.1 Socket概念</p><p> 套接字支持TCP/IP協(xié)議, 它是網(wǎng)絡(luò)通信中的一個比較基本的操作單元。當(dāng)不同的計算機上的程序之間要進行雙向通信的時候,它經(jīng)常被看成這些計算機上進程之間的端點。它既可以構(gòu)成單個主機的編程界面,也能構(gòu)成整個網(wǎng)絡(luò)之間的編程界面。但是,它在通信領(lǐng)域中只能是
100、一種抽象的概念。與它相互交換數(shù)據(jù)的套接字通常都是和它處在同一個通信域之中的。每個進程都是在這個相同域中通過互聯(lián)網(wǎng)協(xié)議簇來達到相互間的通信目的的。但它的功能也不完全局限在同一個域中,假如執(zhí)行了某一種解釋程序的時候,套接字其實也可以穿過這個所謂的域的限制來進行相互間的交換數(shù)據(jù)。</p><p> 套接字的任務(wù)主要用來完成通信任務(wù),那么既然這樣,我們可以想象一下,在現(xiàn)實生活中,我們要進行通信的時候,無論是用書信方法或
101、是選擇電子郵箱的方式進行通信,必須同時填寫發(fā)信人和收信人的信息。那么同樣的道理,想要利用套接字來完成進程之間的通信也必須同時存在通信的兩個端,顯而易見是客戶機端和服務(wù)器端。那么,相對應(yīng)的我們便需要一對套接字分別作用于這兩個端,Client Socket運行在客戶端 ,而Server Socket便運行在服務(wù)器端。</p><p> 4.2.2 Socket工作原理</p><p> 如
102、果套接字之間想要建立連接,一定要完成三個步驟。他們分別叫做服務(wù)器監(jiān)聽步驟,客戶端請求步驟和連接確認步驟。下面我們分別簡要的說說這三個步驟完成的任務(wù)。</p><p> 第一步,顧名思義這是套接字在服務(wù)器端要完成的任務(wù),它一直都是處于一個等待連接的狀態(tài)之中,但是,它卻沒有必要提前知道要與它進行連接的客戶端套接字的信息,對它來說無論是地址還是端口號都不重要。它就是一個實時的網(wǎng)絡(luò)監(jiān)聽,隨時等待連接的請求。</p
103、><p> 第二步,顯然它是客戶端套接字需要完成的任務(wù)。有所不同的是,它必須要知道將要連接的服務(wù)器的相關(guān)信息,也就是前面說的套接字的地址信息和端口號。這樣才可以進行匹配工作,否則它根本不知道要向誰請求連接,這也是沒有意思的。在連接建立起來之前,它需要把想要連接的套接字的信息描述出來,只有指出正確的信息才可以向服務(wù)器提出連接請求。</p><p> 最后一步,服務(wù)器端的套接字接收到連接請求之
104、后會立刻給出響應(yīng),之后會建立新的線程,把自己的描述發(fā)送給客戶端,主要的描述內(nèi)容還是之前提到的地址信息和端口號信息,此時客戶端會對此描述進行確認,之后也就連接成功了。但是這時候服務(wù)器端的套接字并不會停止工作,而是仍然執(zhí)行第一步的任務(wù),處于監(jiān)聽的狀態(tài)之中,等待其他用戶的連接請求,如此進行反復(fù)的工作。這便是套接字在通信連接中起到的作用。</p><p> 4.2.3 Socket分類</p><p
105、> 如果按照通信性質(zhì)劃分,我們可以將套接字分為三種類型,流套接字、數(shù)據(jù)報套接字和原始套接字,這是一種對用戶可見的性質(zhì)[7][8]。通常情況下,應(yīng)用程序一般只會在相同類型的套接字之間進行通信,不過也有例外,但是前提是要通過底層的通信協(xié)議的允許。</p><p> 流套接字可以用來提供面向連接的數(shù)據(jù)傳輸服務(wù),這種服務(wù)的準(zhǔn)確性非常高,能夠使得接受數(shù)據(jù)的過程中不會出現(xiàn)任何差錯,也不會發(fā)送任意重復(fù)的數(shù)據(jù),而且接收
106、的數(shù)據(jù)也是按順序完成的。因為它使用了傳輸控制協(xié)議,所以使得數(shù)據(jù)服務(wù)變得更加穩(wěn)定和可靠。</p><p> 數(shù)據(jù)報套接字,它與前者都屬于標(biāo)準(zhǔn)套接字,不過不同的是它并不提供面向連接的數(shù)據(jù)傳輸服務(wù),因此也不會像前者一樣能夠保證數(shù)據(jù)傳輸?shù)目煽颗c穩(wěn)定,甚至又有可能發(fā)送重復(fù)的數(shù)據(jù)或者丟失數(shù)據(jù),更不會保證順序接受。它使用UDP協(xié)議來進行數(shù)據(jù)傳輸,針對上述缺點需要在程序中做出一些適當(dāng)?shù)奶幚聿判小?lt;/p><
107、p> 原始套接字與前兩者相比較,它并不屬于標(biāo)準(zhǔn)的套接字,那么到底有什么區(qū)別呢?首先它可以對內(nèi)核沒有經(jīng)過處理的IP數(shù)據(jù)包進行讀寫,這說明它并不局限于只用來讀取TCP協(xié)議或者UDP協(xié)議的數(shù)據(jù),這就是它的優(yōu)勢。要想訪問除TCP協(xié)議和UDP協(xié)議發(fā)送數(shù)據(jù)的時候就必須要用到這種原始套接字[8]。</p><p> 4.2.4 Socket連接與TCP連接</p><p> 我們在Socke
108、t連接的創(chuàng)建過程中是能夠使用傳輸協(xié)議的,也就是說如果創(chuàng)建連接時使用了TCP協(xié)議,那么這個Socket連接就是一個TCP連接。</p><p> 在建立一個TCP連接的時候,需要一個過程,通常情況下我們叫它為“三次握手”:</p><p> 第一次握手:客戶端給服務(wù)器發(fā)送一個請求,之后便進入了一個等待的狀態(tài),等待服務(wù)器確認。</p><p> 第二次握手:服務(wù)器
109、在受到了客戶端的連接請求之后,必須對這個請求進行確認,然后再向客戶端發(fā)送一個確認連接請求的信息,隨之也進入了一個等待的狀態(tài)。 </p><p> 第三次握手:客戶端還會受到一個來自與服務(wù)器的信息,然后對服務(wù)器發(fā)送對確認連接請求信息的信息包。在此之后兩端又都進入了ESTABLISHED狀態(tài)。這便是三次握手的過程。。TCP建立三次握手過程如圖4.4。</p><p> 圖4.4 TCP三次
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 計算機科學(xué)與技術(shù)畢業(yè)設(shè)計-局域網(wǎng)內(nèi)終端運行信息管理系統(tǒng)的設(shè)計與實現(xiàn)
- 計算機科學(xué)與技術(shù)專業(yè)畢業(yè)論文--圖書信息管理系統(tǒng)的設(shè)計與實現(xiàn)
- 計算機科學(xué)與技術(shù)畢業(yè)論文-資料管理系統(tǒng)設(shè)計與實現(xiàn)
- 計算機科學(xué)與技術(shù)畢業(yè)論文-賓館管理系統(tǒng)的設(shè)計與實現(xiàn)
- 計算機信息管理系統(tǒng)畢業(yè)論文(設(shè)計)
- 圖書館信息管理系統(tǒng)論文計算機科學(xué)與技術(shù)畢業(yè)論文
- 畢業(yè)論文----計算機局域網(wǎng)組建與互連
- 計算機科學(xué)與技術(shù)畢業(yè)論文-病床呼叫管理系統(tǒng)的設(shè)計與實現(xiàn)
- 計算機畢業(yè)論文---基于vb的學(xué)生信息管理系統(tǒng)的設(shè)計與實現(xiàn)
- 計算機專科畢業(yè)論文計算機局域網(wǎng)組建與應(yīng)用
- 計算機本科畢業(yè)論文---計算機局域網(wǎng)組建與應(yīng)用
- 計算機??飘厴I(yè)論文計算機局域網(wǎng)組建與應(yīng)用
- 計算機科學(xué)與技術(shù)畢業(yè)設(shè)計家教信息管理系統(tǒng)的設(shè)計與實現(xiàn)
- 計算機專業(yè)畢業(yè)論文---人力資源信息管理系統(tǒng)的設(shè)計與實現(xiàn)
- 計算機專科畢業(yè)論文計算機局域網(wǎng)組建與應(yīng)用
- 計算機??飘厴I(yè)論文--計算機局域網(wǎng)組建與應(yīng)用
- 計算機信息管理畢業(yè)論文
- 計算機信息管理畢業(yè)論文
- 計算機局域網(wǎng)的設(shè)計與實現(xiàn)
- 計算機局域網(wǎng)組建畢業(yè)論文
評論
0/150
提交評論