版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 網(wǎng)絡(luò)遠(yuǎn)程通信與控制程序設(shè)計</p><p><b> 作者姓名: </b></p><p> 專業(yè)名稱:計算機(jī)科學(xué)與技術(shù)</p><p> 指導(dǎo)老師: 副教授</p><p><b> 摘 要</b></p><p> 在如今這個信息高速發(fā)
2、達(dá)的時代,人們之間的物理距離雖無太大變化,然而邏輯距離卻在一天天縮小。同時,鑒于交通的繁忙,無紙辦公和遠(yuǎn)程辦公的趨勢已然愈演愈烈!遠(yuǎn)程控制應(yīng)運(yùn)而生。</p><p> 遠(yuǎn)程控制起初是為了讓PC用戶在離開辦公室的時候能夠訪問其臺式PC硬盤中的信息,甚至可以通過其臺式機(jī)PC訪問企業(yè)網(wǎng)絡(luò)資源。今天,許多企業(yè)和增值分銷商正在把遠(yuǎn)程控制能力作為有效的技術(shù)支持工具。很多網(wǎng)絡(luò)管理員都采用這類軟件對局域網(wǎng)進(jìn)行管理或者在家中更新
3、自己網(wǎng)站的內(nèi)容。這類軟件對于出差在外的商務(wù)人員用處非常大,這樣他們可以隨時提取自己家里計算機(jī)中的數(shù)據(jù)和資料。</p><p> 隨著計算機(jī)信息現(xiàn)代工業(yè)的發(fā)展,計算機(jī)遠(yuǎn)程控制管理系統(tǒng)越來越受到各方面的重視。本文主要分析了遠(yuǎn)程控制系統(tǒng)的一些基本功能和組成情況,包括系統(tǒng)的需求分析、系統(tǒng)結(jié)構(gòu)、功能模塊劃分分析等,重點(diǎn)對應(yīng)用程序的實際開發(fā)實現(xiàn)作了介紹。達(dá)到了實時性和安全性,且應(yīng)用程序功能完備。同時簡單介紹了Visual
4、C++ 6.0編程環(huán)境和WinSocket的功能特點(diǎn)。</p><p> 本課題設(shè)計是為適應(yīng)遠(yuǎn)程控制及協(xié)助的要求,使遠(yuǎn)程控制提高到計算機(jī)的實時水平而設(shè)計的。遠(yuǎn)程控制包括多項內(nèi)容,本課題設(shè)計只是承建了其中的一部分即:實時控制。本課題設(shè)計為一個通信應(yīng)用程序,用到了多項技術(shù),諸如:異步模式socket、面向?qū)ο缶幊?、軟件工程思想、API HOOK等。</p><p> 本系統(tǒng)采用Visual
5、 C++ 6.0作為開發(fā)工具, 整個系統(tǒng)操作簡潔、界面友好、功能靈活、實用,實現(xiàn)了包括客戶端屏幕監(jiān)控、文件操作及傳輸、系統(tǒng)服務(wù)和注冊表監(jiān)控等基本功能,基本完成了遠(yuǎn)程控制中所需要到的主要功能。</p><p> 關(guān)鍵詞:套接字 面向?qū)ο?軟件工程 遠(yuǎn)程監(jiān)控</p><p><b> Abstract</b></p><p> Along w
6、ith the development of the calculator information modern industry, the remote control system is more and more value by business enterprise and school. This text mainly analyzed some basic functions of the remote control
7、system and constitute the circumstance, including the requirements analysis, the structure of the system, the function mold piece divide the line analyze etc, the point make the introduction towards applying the actual d
8、evelopment of the procedure realization. Come to the </p><p> This topic design is in order to adapt the remote control request, make the remote assistance carry on the level by design that the management r
9、aises the calculator of. Remote control includes several contents, this topic design just accepted to set up among them of one part namely: The real-time control. This topic used a number of techniques, for example: The
10、socket of asynchronous mode, Object-Oriented, Software Engineering, API HOOK etc. </p><p> This system uses Visual C + + 6.0 as a development tool, the operation of the entire system is simple, interface is
11、 user-friendly, function is flexible and practical, achieved the basic functions including screen monitoring, control and transfer files, process monitoring, system services and registry monitoring, complete the main fun
12、ctions of what the Remote Assistance system need to go.</p><p> Keyword: Socket,Object-Oriented,Software-Engineering,Hook,remote control</p><p><b> 目錄</b></p><p><b
13、> 摘 要I</b></p><p> AbstractII</p><p><b> 目錄III</b></p><p><b> 前言1</b></p><p> 1 遠(yuǎn)程通信與控制技術(shù)概述2</p><p> 1.1 課題背景2
14、</p><p> 1.2 目的以及意義3</p><p> 1.3 Microsoft Visual C++及編程模式簡介4</p><p> 1.3.1 Visual C++的簡介4</p><p> 1.3.2 MFC應(yīng)用程序框架5</p><p> 1.3.3 MFC的消息映射7</p
15、><p> 1.4 系統(tǒng)架構(gòu)的模式10</p><p> 1.4.1 C/S結(jié)構(gòu)模式10</p><p> 1.4.2 TCP C/S模式的通信原理10</p><p> 1.4.3 C/S結(jié)構(gòu)的優(yōu)點(diǎn)11</p><p> 1.5 API HOOK技術(shù)簡介11</p><p>
16、 1.6 CAsyncSocket類的簡單介紹13</p><p> 2 遠(yuǎn)程通信與控制系統(tǒng)分析15</p><p> 2.1 系統(tǒng)基本情況描述15</p><p> 2.2 系統(tǒng)可行性分析16</p><p> 2.2.1 經(jīng)濟(jì)可行性17</p><p> 2.2.2 技術(shù)可行性17</p
17、><p> 2.2.3 操作可行性17</p><p> 2.3 功能需求分析18</p><p> 2.4 系統(tǒng)流程圖19</p><p> 3 遠(yuǎn)程通信與控制程序設(shè)計21</p><p> 3.1 系統(tǒng)設(shè)計使用工具21</p><p> 3.2 系統(tǒng)模塊的設(shè)計21<
18、/p><p> 3.2.1 模塊設(shè)計21</p><p> 3.2.2 屏幕監(jiān)控模塊設(shè)計21</p><p> 3.2.3 文件操作模塊設(shè)計23</p><p> 3.2.4 注冊表操作模塊設(shè)計23</p><p> 3.2.5 發(fā)送信息模塊設(shè)計24</p><p> 3.2.
19、6 API HOOK模塊設(shè)計24</p><p> 3.3 客戶端與服務(wù)器連接設(shè)計24</p><p> 3.4 系統(tǒng)主要模塊實現(xiàn)25</p><p> 3.4.1 屏幕監(jiān)控模塊25</p><p> 3.4.2 文件操作模塊27</p><p> 3.4.3 注冊表操作模塊27</p>
20、;<p> 3.4.4 API HOOK模塊29</p><p> 4 系統(tǒng)實現(xiàn)與測試30</p><p> 4.1 軟件測試基礎(chǔ)30</p><p> 4.1.1 軟件測試的目標(biāo)30</p><p> 4.1.2 軟件測試常用方法30</p><p> 4.2 本系統(tǒng)采用的測試方法
21、31</p><p> 4.2.1 連接測試31</p><p> 4.2.2 文件操作測試33</p><p> 4.2.3 注冊表操作測試36</p><p> 4.2.4 發(fā)送信息測試39</p><p> 4.2.5 屏幕控制測試40</p><p> 4.2.6
22、 測試結(jié)論42</p><p><b> 總 結(jié)43</b></p><p><b> 致 謝44</b></p><p><b> 參考文獻(xiàn)45</b></p><p><b> 前言</b></p><p>
23、隨著計算機(jī)網(wǎng)絡(luò)的飛速發(fā)展以及網(wǎng)絡(luò)技術(shù)的日益普及和大眾化,人們可以很方便地從Internet上獲取和自己工作生活密切相關(guān)的信息,世界也真正變成一個地球村,我們可以和世界上其他任何一個人通過計算機(jī)網(wǎng)絡(luò)進(jìn)行溝通,信息資源達(dá)到了高度的共享。從這一點(diǎn)得到啟發(fā),希望能設(shè)計一個遠(yuǎn)程控制系統(tǒng),通過它可以在家里控制辦公室里的計算機(jī)。如果你是軟件開發(fā)商,你的員工可以通過它在辦公室里遠(yuǎn)程為客戶配置系統(tǒng)、對產(chǎn)品進(jìn)行維護(hù),如果客戶向你報告軟件產(chǎn)品出現(xiàn)問題你可以遠(yuǎn)
24、程對產(chǎn)品進(jìn)行調(diào)試,最終解決問題。這樣員工就不會因長期的勞苦奔波而抱怨,用戶也不會因為你不能及時解決問題而和你討價還價,當(dāng)然,也為公司節(jié)約了人力、財力和物力。</p><p> 遠(yuǎn)程控制軟件一般分兩個部分:一部分是客戶端程序Client,另一部分是服務(wù)器端程序Server,在使用前需要將客戶端程序安裝到主控端電腦上,將服務(wù)器端程序安裝到被控端電腦上。它的控制的過程一般是先在主控端電腦上執(zhí)行客戶端程序,像一個普通的
25、客戶一樣向被控端電腦中的服務(wù)器端程序發(fā)出信號,建立一個特殊的遠(yuǎn)程服務(wù),然后通過這個遠(yuǎn)程服務(wù),使用各種遠(yuǎn)程控制功能發(fā)送遠(yuǎn)程控制命令,控制被控端電腦中的各種應(yīng)用程序運(yùn)行,這種遠(yuǎn)程控制方式稱為基于遠(yuǎn)程服務(wù)的遠(yuǎn)程控制。通過遠(yuǎn)程控制軟件,可以進(jìn)行很多方面的遠(yuǎn)程控制,包括獲取目標(biāo)電腦屏幕圖像、窗口及進(jìn)程列表等等。</p><p> 遠(yuǎn)程控制具有一下優(yōu)點(diǎn):便于用戶能夠在任何地方通過網(wǎng)絡(luò)及時,快速的訪問,控制自己的主機(jī)。特別是
26、對于網(wǎng)絡(luò)管理員,技術(shù)服務(wù)人員來說,遠(yuǎn)程控制提供了一個便捷,高效的手段。</p><p> 當(dāng)然,遠(yuǎn)程控制軟件是一把雙刃劍,有優(yōu)點(diǎn)就會有缺點(diǎn),它存在比較嚴(yán)重的安全隱患。一方面給用戶和網(wǎng)絡(luò)管理員工作帶了很大的方便,另一方面也給一些居心不良者留下后門。形成很多木馬程序。這就需要對軟件在設(shè)計方面做一些安全考慮。</p><p> 1 遠(yuǎn)程通信與控制技術(shù)概述</p><p&g
27、t;<b> 1.1 課題背景</b></p><p> 通常企業(yè)內(nèi)部或者IT公司的客戶技術(shù)支持部門都有技術(shù)支持業(yè)務(wù),其任務(wù)是通過電話解答疑難問題,努力減少技術(shù)人員到現(xiàn)場服務(wù)或者讓用戶把設(shè)備送到支持中心進(jìn)行維護(hù)。這種技術(shù)支持方式盡管被普遍采用,但效率不高而且大大增加了技術(shù)支持成本。</p><p> 通常,技術(shù)支持必須依賴技術(shù)人員和用戶之間的口頭交流來進(jìn)行,這種
28、交流既耗時又容易出錯。許多商業(yè)用戶對計算機(jī)知之甚少,然而當(dāng)遇到問題時,他們必須向技術(shù)人員提供故障情報及相關(guān)操作。在嘗試解決問題時,技術(shù)人員可能指導(dǎo)用戶執(zhí)行一系列復(fù)雜的過程,而這些過程對用戶來說或許完全不熟悉;如果用戶不能正確的按要求操作,反而使問題惡化。此外,如果通過電話不能解決問題,那么在技術(shù)人員親自到用戶現(xiàn)場解決問題之前,計算機(jī)將無法繼續(xù)使用,導(dǎo)致工作延誤。</p><p> 電腦中的遠(yuǎn)程控制技術(shù),始于DO
29、S時代,只不過當(dāng)時由于技術(shù)上沒有什么大的變化,網(wǎng)絡(luò)不發(fā)達(dá),市場沒有更高的要求,所以遠(yuǎn)程控制技術(shù)沒有引起更多人的注意。但是,隨著網(wǎng)絡(luò)的高度發(fā)展,電腦的管理及技術(shù)支持的需要,遠(yuǎn)程操作及控制技術(shù)越來越引起人們的關(guān)注。遠(yuǎn)程控制一般支持下面的這些網(wǎng)絡(luò)方式:LAN、WAN、撥號方式及互聯(lián)網(wǎng)方式。此外,有的遠(yuǎn)程控制軟件還支持通過串口、并口、紅外端口來對遠(yuǎn)程機(jī)進(jìn)行控制(不過這里說的遠(yuǎn)程電腦,只能是有限距離范圍內(nèi)的電腦了)。傳統(tǒng)的遠(yuǎn)程控制軟件一般使用NE
30、TBEUI、NETBIOS、IPX/SPX、TCP等協(xié)議來實現(xiàn)遠(yuǎn)程控制,不過,隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,很多遠(yuǎn)程控制軟件提供通過Web頁面以Java技術(shù)來控制遠(yuǎn)程電腦,這樣可以實現(xiàn)不同操作系統(tǒng)下的遠(yuǎn)程控制。 </p><p> TCP協(xié)議遠(yuǎn)程控制主要有windows系統(tǒng)自帶的遠(yuǎn)程桌面、pcAnyWhere(賽門鐵克公司)等,網(wǎng)上98%的遠(yuǎn)程控制軟件都使用TCP協(xié)議來實現(xiàn)遠(yuǎn)程控制(包括上述幾款),使用TCP協(xié)議的遠(yuǎn)程控
31、制軟件的優(yōu)勢是穩(wěn)定、連接成功率高;缺陷是雙方必須有一方具有公網(wǎng)IP(或在同一個內(nèi)網(wǎng)中),否則就需要在路由器上做端口映射。這意味著你只能用這些軟件控制擁有公網(wǎng)IP的電腦,或者只能控制同一個內(nèi)網(wǎng)中的電腦(比如控制該公司里其它的電腦)。你不可能使用TCP協(xié)議的軟件從某一家公司的電腦,控制另外一家公司的內(nèi)部電腦,或者從網(wǎng)吧、賓館里控制你辦公室的電腦,因為他們處于不同的內(nèi)網(wǎng)中。80%以上的電腦都處于內(nèi)網(wǎng)中(使用路由共享上網(wǎng)的方式即為內(nèi)網(wǎng)),TCP
32、軟件不能穿透內(nèi)網(wǎng)的缺陷,使得該類軟件使用率大打折扣。但是目前很多遠(yuǎn)程控制軟件支持從被控端主動連接到控制端,可以一定程度上彌補(bǔ)該缺陷。</p><p> UDP協(xié)議遠(yuǎn)程控制與 TCP 協(xié)議遠(yuǎn)程控制不同,UDP傳送數(shù)據(jù)前并不與對方建立連接,發(fā)送數(shù)據(jù)前后也不進(jìn)行數(shù)據(jù)確認(rèn),從理論上說速度會比TCP快(實際上會受網(wǎng)絡(luò)質(zhì)量影響)。最關(guān)鍵的是:使用UDP協(xié)議可以利用UDP的打洞原理(UDP Hole Punching技術(shù))穿
33、透內(nèi)網(wǎng)。從而解決了TCP協(xié)議遠(yuǎn)程控制軟件需要做端口映射的難題。這樣,即使雙方都在不同的局域網(wǎng)內(nèi),也可以實現(xiàn)遠(yuǎn)程連接和控制。QQ、MSN、網(wǎng)絡(luò)人遠(yuǎn)程控制軟件、XT800的遠(yuǎn)程控制功能都是基于UDP協(xié)議的。你會發(fā)現(xiàn)使用穿透內(nèi)網(wǎng)的遠(yuǎn)程控制軟件無需做端口映射即可實現(xiàn)連接,這類軟件都需要一臺服務(wù)器協(xié)助程序進(jìn)行通訊以便實現(xiàn)內(nèi)網(wǎng)的穿透。由于IP資源日益稀缺,越來越多的用戶會在內(nèi)網(wǎng)中上網(wǎng),因此能穿透內(nèi)網(wǎng)的遠(yuǎn)程控制軟件,將是今后遠(yuǎn)程控制發(fā)展的主流方向。&
34、lt;/p><p> 1.2 目的以及意義</p><p> 本文正是在上文提到的背景下提出的,目的就是為了解決計算機(jī)的遠(yuǎn)程操作,降低企業(yè)對軟件的后期維護(hù)成本,提高計算機(jī)遠(yuǎn)程通信能力的減少誤操作率來提升遠(yuǎn)程工作者的工作效率,設(shè)計出一款計算機(jī)網(wǎng)絡(luò)遠(yuǎn)程控制系統(tǒng)。遠(yuǎn)程控制系統(tǒng)能使技術(shù)人員直接操作遠(yuǎn)程計算機(jī),就像操作本地機(jī)器一樣,無須用戶介入,技術(shù)人員技能得到該機(jī)器的問題的第一手材料,從而加快了問
35、題的解決。實際上,使用遠(yuǎn)程控制工具的技術(shù)人員能夠做到解答疑難問題,安裝和配置軟件,把軟件下載到用戶計算機(jī)上,配置應(yīng)用程序和系統(tǒng)軟件設(shè)置并可通過實際操作培訓(xùn)用戶。總之,本畢業(yè)設(shè)計題目的設(shè)計與實現(xiàn)具有很大的現(xiàn)實意義。</p><p> 1.3 C++及編程模式簡介</p><p> 1.3.1 Visual C++簡介</p><p> Microsoft Vis
36、ual C++是Microsoft公司推出的開發(fā)Win32環(huán)境程序,面向?qū)ο蟮目梢暬删幊滔到y(tǒng)。它不但具有程序框架自動生成、靈活方便的類管理、代碼編寫和界面設(shè)計集成交互操作、可開發(fā)多種程序等優(yōu)點(diǎn),而且通過簡單的設(shè)置就可使其生成的程序框架支持?jǐn)?shù)據(jù)庫接口、OLE2,WinSock網(wǎng)絡(luò)、3D控制界面。</p><p> 它以擁有“語法高亮”, IntelliSense(自動編譯功能)以及高級除錯功能而著稱。比如,它
37、允許用戶進(jìn)行遠(yuǎn)程調(diào)試,單步執(zhí)行等。還有允許用戶在調(diào)試期間重新編譯被修改的代碼,而不必重新啟動正在調(diào)試的程序。其編譯及建置系統(tǒng)以預(yù)編譯頭文件、最小重建功能及累加連結(jié)著稱。這些特征明顯縮短程式編輯、編譯及連結(jié)的時間花費(fèi),在大型軟件計劃上尤其顯著。</p><p> Visual C++的資源編輯器能以所見即所得的形式直接編輯程序的用戶界面,為所有資源分配ID標(biāo)識號。ClassWizard能把對話框模板與生成的類定義
38、或與已有的類代碼連接起來,為菜單項、控制等資源生成空的處理函數(shù)模板,創(chuàng)建消息映射條目,并將資源ID與處理函數(shù)連接起來。通過使用AppWizard,程序員的編程工作便簡化為用資源編輯器直觀的設(shè)計界面,完善對話框類代碼,在空的處理函數(shù)模板處填寫響應(yīng)用戶操作的代碼,這是一種比較完善的可視化編程方法。</p><p> 但產(chǎn)品名“Visual C++”也容易誤導(dǎo)人,讓人認(rèn)為自己使用的是一個與Microsoft Visu
39、al Basic類似的完全可視化的系統(tǒng)。然而,使用Visual C++,開發(fā)人員必須真正地閱讀和編寫C++代碼。Visual C++向?qū)Э梢怨?jié)省時間和提高精度,但是,程序員也必須理解向?qū)Мa(chǎn)生的代碼,并且,最重要的是,還必須理解MFC庫的結(jié)構(gòu)和Windows操作系統(tǒng)的內(nèi)部工作方式。</p><p> 1.3.2 MFC應(yīng)用程序框架</p><p> MFC實際上是微軟提供的,用于在C++
40、環(huán)境下編寫應(yīng)用程序的一個框架和引擎,VC++是Windows下開發(fā)人員使用的專業(yè)C++ SDK(SDK,Standard SoftWare Develop Kit,專業(yè)開發(fā)平臺),MFC就是掛在它之上的一個輔助軟件開發(fā)包,MFC作為與VC++血肉相連的部分(注意C++和VC++的區(qū)別:C++是一種程序設(shè)計語言,是一種大家都承認(rèn)的軟件編制的通用規(guī)范,而VC++只是一個編譯器,或者說是一種編譯器+源程序編譯器的IDE,WS,PlatForm
41、,這跟Pascal和Delphi的關(guān)系一個道理,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è)計的要素,是一種性質(zhì)上的飛躍,使VB既是一個IDE,又成長成一個新的程序設(shè)計語言),MFC同BC++集成的VCL一樣是一個非外掛式的
42、軟件包,類庫,只不過MFC類是微軟為VC++專配的。 </p><p> MFC是Win API與C++的結(jié)合,API,即微軟提供的Windows下應(yīng)用程序的編程語言接口,是一種軟件編程的規(guī)范,但不是一種程序開發(fā)語言本身,可以允許用戶使用各種各樣的第三方(如我是一方,微軟是一方,Borland就是第三方)的編程語言來進(jìn)行對Windows下應(yīng)用程序的開發(fā),使這些被開發(fā)出來的應(yīng)用程序能在Windows下運(yùn)行,比如V
43、B,VC++,JAVA,Delhpi編程語言函數(shù)本質(zhì)上全部源于API,因此用它們開發(fā)出來的應(yīng)用程序都能工作在Windows的消息機(jī)制和繪圖里,遵守Windows作為一個操作系統(tǒng)的內(nèi)部實現(xiàn),這其實也是一種必要,微軟如果不提供API,這個世上對Windows編程的工作就不會存在,微軟的產(chǎn)品就會迅速從時尚變成垃圾,上面說到MFC是微軟對API函數(shù)的專用C++封裝,這種結(jié)合一方面讓用戶使用微軟的專業(yè)C++ SDK來進(jìn)行Windows下應(yīng)用程序的
44、開發(fā)變得容易,因為MFC是對API的封裝,微軟做了大量的工作,隱藏了好多程序開發(fā)人員在Windows下用C++ & MFC編制軟件時的大量內(nèi)節(jié),如應(yīng)用程序?qū)崿F(xiàn)消息的處理,設(shè)備環(huán)境繪圖,這種結(jié)合是以方便為目的的,必定要付出</p><p> MFC不只是一個功能單純的界面開發(fā)系統(tǒng),它提供的類絕大部分用來進(jìn)行界面開發(fā),關(guān)聯(lián)一個窗口的動作,但它提供的類中有好多類不與一個窗口關(guān)聯(lián),即類的作用不是一個界面類,不實
45、現(xiàn)對一個窗口對象的控制(如創(chuàng)建,銷毀),而是一些在Windows(用MFC編寫的程序絕大部分都在Windows中運(yùn)行)中實現(xiàn)內(nèi)部處理的類,如數(shù)據(jù)庫的管理類等,學(xué)習(xí)中最應(yīng)花費(fèi)時間的是消息和設(shè)備環(huán)境,對C++和MFC的學(xué)習(xí)中最難的部分是指針,C++面向?qū)ο蟪绦蛟O(shè)計的其它部分,如數(shù)據(jù)類型,流程控制都不難,建議學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)C++版。 </p><p> MFC是微軟封裝了的API。windows作為一個提供功能強(qiáng)大的應(yīng)
46、用程序接口編程的操作系統(tǒng),的確方便了許多程序員,傳統(tǒng)的win32開發(fā)(直接使用windows的接口函數(shù)API)對于程序員來說非常的困難,因為,API函數(shù)實在太多了,而且名稱很亂,從零構(gòu)架一個窗口動輒就是上百行的代碼。MFC是面向?qū)ο蟪绦蛟O(shè)計與Application framework的完美結(jié)合,他將傳統(tǒng)的API進(jìn)行了分類封裝,并且為使用者創(chuàng)建程序的一般框架。</p><p> 應(yīng)用程序框架的一種定義是提供一般應(yīng)
47、用程序需要的全部面向?qū)ο筌浖M件的集成集合。</p><p> C++流行的一個原因是它可以用類庫擴(kuò)充。類庫是可在應(yīng)用程序中使用的有關(guān)C++類的集合。應(yīng)用程序框架是類庫的超集。一般的類庫只是一種孤立的類的集合,用來嵌入在任何程序中,但是,應(yīng)用程序框架卻定義了程序的結(jié)構(gòu)。自從MFC庫發(fā)布以來,MFC已經(jīng)成為主要的Windows類庫。使用MFC類庫構(gòu)建應(yīng)用程序具有以下優(yōu)點(diǎn)。 </p><p>
48、; MFC庫是C++的Microsoft Windows API。</p><p> 應(yīng)用程序框架生成的應(yīng)用程序使用了標(biāo)準(zhǔn)的結(jié)構(gòu),具有標(biāo)準(zhǔn)化的用戶接口,這對具有標(biāo)準(zhǔn)用戶界面的Win32程序來說,可以極大的減輕程序員的負(fù)擔(dān),使程序員不必過多地考慮界面,可把主要精力放在程序設(shè)計上,以提高程序設(shè)計的效率。</p><p> 使用應(yīng)用程序框架的應(yīng)用程序不僅小,而且運(yùn)行速度快,具有很大的靈活性
49、。MFC封裝了Win32 SDK中的幾乎所有函數(shù),能實現(xiàn)Win32系統(tǒng)的任何功能。</p><p> MFC框架降低了編碼的復(fù)雜性。</p><p> MFC庫應(yīng)用程序框架有豐富的特性,如:Windows API的C++接口、通用的(非Windows所特有的)類、“共用根對象”類層次結(jié)構(gòu)、流線式多文檔界面(MDI)應(yīng)用程序支持等。</p><p> 強(qiáng)大的功能
50、。除封裝了大部分的Win32 SDK函數(shù)外,MFC還提供了應(yīng)用程序本身的數(shù)據(jù)和操作及ActiveX、OLE、Internet、WinSock、DAO(Data Access Objects)、ODBC(Open DataBase Connectivity)等操作類。</p><p> MFC框架的核心是文檔/視圖結(jié)構(gòu)(Document-View Architecture),這是一個很好用、但又往往較難以入門的功
51、能。簡單的說,文檔/視圖結(jié)構(gòu)就是將數(shù)據(jù)和對數(shù)據(jù)的觀察或數(shù)據(jù)的表現(xiàn)(顯示)相分離。文檔僅處理數(shù)據(jù)的實際讀、寫操作,視圖則是顯示和處理數(shù)據(jù)的窗口,視圖可以操作文檔中的數(shù)據(jù)。</p><p> 1.3.3 MFC的消息映射</p><p> 在使用Visual C++進(jìn)行Win32程序設(shè)計時,消息映射是一個非常重要的概念。Windows應(yīng)用程序是消息驅(qū)動的,應(yīng)用程序不能直接得到用戶所做的操作
52、,如鼠標(biāo)按鍵、鍵盤輸入和窗口移動等。這些操作由操作系統(tǒng)管理,操作系統(tǒng)檢測到操作事件后,便向相關(guān)的應(yīng)用程序發(fā)送消息,應(yīng)用程序響應(yīng)這些消息來完成用戶的操作。</p><p><b> 1、消息</b></p><p> Windows中的消息是操作系統(tǒng)與應(yīng)用程序之間、應(yīng)用程序與應(yīng)用程序之間、應(yīng)用程序各對象之間相互控制與傳遞信息的方式。消息的基本格式如下:</p&
53、gt;<p> Message wParam lParam</p><p> Message是消息名稱;wParam是與消息相關(guān)的Word型參數(shù);lParam是與消息相關(guān)的Long型參數(shù)。消息主要有以下3類。</p><p> Windows系統(tǒng)消息:Windows系統(tǒng)向窗口發(fā)送的消息,由窗口(Window)或視圖(View)進(jìn)行響應(yīng)處理。這類消息包括除WM_COMMA
54、ND消息之外的名稱以WM_開始的其他消息。</p><p> 控制通知消息:控制或子窗口傳給父窗口的WM_COMMAND通知的消息。</p><p> 命令消息:在響應(yīng)用戶接口操作時,將產(chǎn)生WM_COMMAND命令消息。其參數(shù)指定了用戶接口的標(biāo)識號,如菜單項和按鈕等ID號。</p><p><b> 2、消息映射過程</b></p&
55、gt;<p> 在使用AppWizard創(chuàng)建應(yīng)用程序時,MFC應(yīng)用程序框架設(shè)置了相應(yīng)的消息處理函數(shù)來響應(yīng)消息,以完成相應(yīng)的操作。消息處理函數(shù)是某些類(通常是窗口類)的成員函數(shù)和程序員在其中編寫響應(yīng)消息時應(yīng)進(jìn)行操作的代碼。</p><p> 框架將消息和它們的處理函數(shù)連接起來就是消息映射。消息映射使應(yīng)用程序在接收到消息時調(diào)用對應(yīng)的消息處理函數(shù)來響應(yīng)和處理消息。</p><p&g
56、t; ClassWizard在創(chuàng)建新類時將為其創(chuàng)建一個消息映射,并為每個類能響應(yīng)的消息和命令增加對應(yīng)的處理函數(shù)。在源代碼中,消息映射開始于BEGIN_MESSAGE_MAP宏,結(jié)束于END_MESSAGE_MAP宏,中間由一系列預(yù)定義的被稱為“條目宏”的宏組成。其基本格式如下:</p><p> BEGIN_MESSAGE_MAP (classname, parentclassname)</p>
57、<p> //{{AFX_MSG_MAP (classname)</p><p><b> 條目宏1</b></p><p><b> 條目宏2</b></p><p><b> 條目宏3</b></p><p><b> …………</b&
58、gt;</p><p> //}}AFX_MSG_MAP</p><p> END_MESSAGE_MAP ()</p><p> 其中classname為擁有消息映射的當(dāng)前類名,parentclassname為當(dāng)前類的父類名。條目宏定義了類所處理的消息與其對應(yīng)的函數(shù)。常用的條目宏類型如表1.1所示。</p><p> Windows
59、消息的處理函數(shù)在CWnd類中進(jìn)行了預(yù)定義,類庫以消息名為基礎(chǔ)定義這些處理函數(shù)的名稱,且MFC要求所有消息處理函數(shù)聲明為afx_msg類型。例如,消息WM_PAINT的處理函數(shù)在CWnd類中的聲明如下:</p><p> afx_msg void OnPaint();</p><p> 表1.1 消息映射條目宏</p><p> 通過ClassWizard在派
60、生類中用同樣的原型定義處理函數(shù)并為該函數(shù)生成消息映射條目,然后由程序員編寫處理函數(shù)代碼,并在派生類中覆蓋了其父類的消息處理函數(shù)。在有些情況下,必須在派生類的消息處理函數(shù)中調(diào)用其父類的消息處理函數(shù),使Windows和基類能對消息進(jìn)行處理。ClassWizard將在生成的處理函數(shù)中建議是否應(yīng)調(diào)用父類的消息處理函數(shù)及調(diào)用的次序。除此之外,用戶定義和注冊的消息、命令和控制通知都沒有默認(rèn)的處理函數(shù),需要在定義時聲明,一般根據(jù)其ID名稱來為函數(shù)命名
61、。</p><p> 1.4 系統(tǒng)架構(gòu)的模式</p><p> C/S結(jié)構(gòu),即Client/Server(客戶機(jī)/服務(wù)器)結(jié)構(gòu),軟件系統(tǒng)體系結(jié)構(gòu),通過將任務(wù)合理分配到Client端和Server端,降低了系統(tǒng)的通訊開銷,可以充分利用兩端硬件環(huán)境的優(yōu)勢。</p><p> 1.4.1 C/S結(jié)構(gòu)模式</p><p> Client/Se
62、rver結(jié)構(gòu),它的發(fā)展經(jīng)歷了兩個階段:從兩層結(jié)構(gòu)到三層結(jié)構(gòu)。</p><p> 兩層結(jié)構(gòu),它由兩部分構(gòu)成,前端是客戶機(jī),通常是PC,主要完成用戶界面顯示,接受數(shù)據(jù)輸入,校驗數(shù)據(jù)有效性,向后臺數(shù)據(jù)庫發(fā)請求,接受返回結(jié)果,處理應(yīng)用邏輯;后端是服務(wù)器,運(yùn)行DBMS,提供數(shù)據(jù)庫的查詢和管理。應(yīng)用邏輯主要在前端,如在后端則是存儲過程的形式。</p><p> 三層結(jié)構(gòu)則利用中間件將應(yīng)用分為表示層
63、、業(yè)務(wù)邏輯層和數(shù)據(jù)存儲層三個不同的處理層次。三個層次的劃分是從邏輯上來分的,具體的物理分法可以有多種組合?;谌龑咏Y(jié)構(gòu)的應(yīng)用系統(tǒng)不但具備了大型機(jī)系統(tǒng)穩(wěn)定、安全和處理能力高等特性,同時擁有開放系統(tǒng)成本低、可擴(kuò)展性強(qiáng)、開發(fā)周期短等優(yōu)點(diǎn)。而中間件作為構(gòu)造三層結(jié)構(gòu)應(yīng)用系統(tǒng)的基礎(chǔ)平臺,提供了以下主要功能:負(fù)責(zé)客戶機(jī)與服務(wù)器間、服務(wù)器間與服務(wù)器間的聯(lián)接和通訊;實現(xiàn)應(yīng)用與數(shù)據(jù)庫的高效連接;提供一個三層結(jié)構(gòu)應(yīng)用的開發(fā)、運(yùn)行、部署和管理的平臺。</
64、p><p> 1.4.2 TCP C/S通信原理</p><p> TCP Client/Server的通信原理如圖1.1所示,服務(wù)器端首先監(jiān)聽一個固定端口,客戶端再連接到服務(wù)端,此時服務(wù)端執(zhí)行Accept操作,以接受客戶端的連接。此時連接創(chuàng)建成功,則進(jìn)行數(shù)據(jù)傳輸,待數(shù)據(jù)傳輸完畢,服務(wù)端和客戶端就斷開連接。</p><p> 圖1.1 Client/Server的
65、通信流程</p><p> 1.4.3 C/S結(jié)構(gòu)的優(yōu)點(diǎn)</p><p> Client/Server技術(shù)在目前程序開發(fā)中得到了廣泛的應(yīng)用,這種技術(shù)的優(yōu)點(diǎn)在于它將處理工作按照一定的比例分配到客戶端和服務(wù)器上去執(zhí)行,這樣減少了網(wǎng)絡(luò)傳輸?shù)墓ぷ髁浚瑥亩侠淼乩昧速Y源,提高了應(yīng)用程序開發(fā)的效率。由于客戶端實現(xiàn)與服務(wù)器的直接相連,沒有中間環(huán)節(jié),因此響應(yīng)速度快。</p><p
66、> 1.5 API HOOK技術(shù)簡介</p><p> Hook是Windows中提供的一種用以替換DOS下“中斷”的系統(tǒng)機(jī)制,中文譯為“掛鉤”或“鉤子”。在對特定的系統(tǒng)事件進(jìn)行hook后,一旦發(fā)生已hook事件,對該事件進(jìn)行hook的程序就會受到系統(tǒng)的通知,這時程序就能在第一時間對該事件做出響應(yīng)。鉤子實際上是一個處理消息的程序段,通過系統(tǒng)調(diào)用,把它掛入系統(tǒng)。每當(dāng)特定的消息發(fā)出,在沒有到達(dá)目的窗口前,鉤
67、子程序就先捕獲該消息,亦即鉤子函數(shù)先得到控制權(quán)。這時鉤子函數(shù)即可以加工處理(改變)該消息,也可以不作處理而繼續(xù)傳遞該消息,還可以強(qiáng)制結(jié)束消息的傳遞。</p><p> API HOOK技術(shù)是一種用于改變API執(zhí)行結(jié)果的技術(shù),Microsoft 自身也在Windows操作系統(tǒng)里面使用了這個技術(shù),如Windows兼容模式等。 API HOOK 技術(shù)并不是計算機(jī)病毒專有技術(shù),但是計算機(jī)病毒經(jīng)常使用這個技術(shù)來達(dá)到隱藏自
68、己的目的。</p><p> 在windows系統(tǒng)下編程,應(yīng)該會接觸到api函數(shù)的使用,常用的API函數(shù)大概有2000個左右。今天隨著控件,stl等高效編程技術(shù)的出現(xiàn),api的使用概率在普通的用戶程序上就變得越來越小了。當(dāng)諸如控件這些現(xiàn)成的手段不能實現(xiàn)的功能時,我們還需要借助API。最初有些人對某些api函數(shù)的功能不太滿意,就產(chǎn)生了如何修改這些api,使之更好的服務(wù)于程序的想法,這樣API hook就自然而然
69、的出現(xiàn)了。我們可以通過api hook,改變一個系統(tǒng)API的原有功能。基本的方法就是通過hook“接觸”到需要修改的api函數(shù)入口點(diǎn),改變它的地址指向新的自定義的函數(shù)。api hook并不屬于MSDN上介紹的13類Hook中的任何一種。</p><p> Windows系統(tǒng)下的編程,消息Message的傳遞是貫穿其始終的。Hook與消息有著非常密切的聯(lián)系,它的中文含義是“鉤子”,這樣理解起來不難得出“Hook是
70、消息處理中的一個環(huán)節(jié),用于監(jiān)控消息在系統(tǒng)中的傳遞,并在這些消息到達(dá)最終的消息處理過程前,處理某些特定的消息”。這也是Hook分為不同種類的原因。</p><p> 在Windows系統(tǒng)下編程,經(jīng)常接觸到API函數(shù)的使用,常用的API函數(shù)大概有2000個左右。今天隨著控件,STL等高效編程技術(shù)的出現(xiàn),API的使用概率在普通的用戶程序上就變得越來越小了。當(dāng)諸如控件這些現(xiàn)成的手段不能實現(xiàn)的功能時,因此還需要借助API
71、。最初有些人對某些API函數(shù)的功能不太滿意,就產(chǎn)生了如何修改這些API,使之更好的服務(wù)于程序的想法,這樣API Hook就自然而然的出現(xiàn)了。通過API Hook,改變一個系統(tǒng)API的原有功能?;镜姆椒ň褪峭ㄟ^Hook“接觸”到需要修改的API函數(shù)入口點(diǎn),改變它的地址指向新的自定義的函數(shù)。API Hook并不屬于MSDN上介紹的13類Hook中的任何一種。所以說,API Hook并不是什么特別不同的Hook,它也需要通過基本的Hook提
72、高自己的權(quán)限,跨越不同進(jìn)程間訪問的限制,達(dá)到修改API函數(shù)地址的目的。</p><p> 1.6 CAsyncSocket類的簡單介紹</p><p> CAsyncSocket類是MFC對WINSOCK API的較底層封裝,通過類名就知道這是一個異步非阻塞SOCKET類。CAsyncSocket::Create()有一個參數(shù)指明了使用者想要處理哪些Socket事件,使用者關(guān)心的事件被
73、指定以后,這個Socket默認(rèn)就被用作了異步方式。CAsyncSocket的Create()函數(shù),除了創(chuàng)建了一個SOCKET以外,還創(chuàng)建了個CSocketWnd窗口對象,并使用WSAAsyncSelect()將這個SOCKET與該窗口對象關(guān)聯(lián),以讓該窗口對象處理來自Socket的事件(消息),然而CSocketWnd收到Socket事件之后,只是簡單地回調(diào)CAsyncSocket::OnReceive()等虛函數(shù)。所以CAsyncSoc
74、ket的派生類,只需要在這些虛函數(shù)里添加發(fā)送和接收的代碼。</p><p> 客戶端在使用CAsyncSocket::Connect()時,往往返回一個WSAEWOULDBLOCK的錯誤(其它的某些函數(shù)調(diào)用也如此,如:Send(),Receive()等),實際上這不應(yīng)該算作一個錯誤,它是Socket在提醒用戶,由于使用了非阻塞Socket方式,所以(連接)操作需要時間,不能瞬間建立。因此可以在程序中等待,等它連
75、接成功為止,于是許多程序員就在調(diào)用Connect()之后,Sleep(0),然后不停地用WSAGetLastError()或者CAsyncSocket::GetLastError()查看Socket返回的錯誤,直到返回成功為止。這是一種錯誤的做法,不能達(dá)到預(yù)期目的。事實上,可以在Connect()調(diào)用之后等待CAsyncSocket::OnConnect()事件被觸發(fā),CAsyncSocket::OnConnect()是要表明Socke
76、t要么連接成功了,要么連接徹底失敗了。</p><p> 在客戶端調(diào)用Connect()連接服務(wù)端,服務(wù)端Accept()的做法就是在監(jiān)聽的Socket收到OnAccept()時,用一個新的CAsyncSocket對象去建立連接,例如: </p><p> void CMySocket::OnAccept(int ErrCode)</p><p><b&g
77、t; { </b></p><p> CMySocket* pSocket = new CMySocket; </p><p> Accept( *pSocket ); </p><p><b> } </b></p><p> 于是,上面的pSocket和客戶端建立了連接,以后的通信就是這個pSo
78、cket對象去和客戶端進(jìn)行,而監(jiān)聽的Socket仍然繼續(xù)在監(jiān)聽,一旦又有一個客戶端要連接服務(wù)端,則上面的OnAccept()又會被調(diào)用一次。當(dāng)然pSocket是和客戶端通信的服務(wù)端,它不會觸發(fā)OnAccept()事件,因為它不是監(jiān)聽Socket。</p><p> CAsyncSocket類為我們使用Socket提供了極大方便。建立Socket的WSAStartup過程和bind過程被簡化成為Create過程,
79、IP地址類型轉(zhuǎn)換、主機(jī)名和IP地址轉(zhuǎn)換的過程中許多復(fù)雜的變量類型都被簡化成字符串和整數(shù)操作,特別是CAsyncSocket類的異步特點(diǎn),完全可以替代繁瑣的線程操作。MFC提供了大量的類庫,靈活使用這些類庫,便會大大提高編程的效率。</p><p> 2 遠(yuǎn)程通信與控制系統(tǒng)分析</p><p> 2.1 系統(tǒng)基本情況描述</p><p> 電腦中的遠(yuǎn)程控制技術(shù),
80、始于DOS時代,只不過當(dāng)時由于技術(shù)上沒有什么大的變化,網(wǎng)絡(luò)不發(fā)達(dá),市場沒有更高的要求,所以遠(yuǎn)程控制技術(shù)沒有引起更多人的注意。但是,隨著網(wǎng)絡(luò)的高度發(fā)展,電腦的管理及技術(shù)支持的需要,遠(yuǎn)程操作及控制技術(shù)越來越引起人們的關(guān)注。傳統(tǒng)的遠(yuǎn)程控制軟件一般使用NETBEUI、NETBIOS、IPX/SPX、 TCP/IP等協(xié)議來實現(xiàn)遠(yuǎn)程控制,不過,隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,目前很多遠(yuǎn)程控制軟件提供通過Web頁面以Java技術(shù)來控制遠(yuǎn)程電腦,這樣可以實現(xiàn)不同操
81、作系統(tǒng)下的遠(yuǎn)程控制</p><p> 隨著計算機(jī)技術(shù)的不斷發(fā)展,人們要處理的任務(wù)也越來越多,工作地點(diǎn)也有可能是多個,在計算機(jī)使用的過程中就會遇到這樣那樣的問題,從而使得工作變得更加繁重。如果將計算機(jī)系統(tǒng)進(jìn)行還原或重裝,一些重要資料有可能將會丟失。尋求一種方便、高效的方法對出現(xiàn)故障的系統(tǒng)進(jìn)行修復(fù)已經(jīng)成為人們的迫切需要。本課題設(shè)計的使用,能幫助技術(shù)人員方便、高效的修復(fù)遠(yuǎn)程系統(tǒng)軟件,提高人們的工作效率,降低系統(tǒng)維護(hù)的
82、成本。</p><p> 遠(yuǎn)程控制和木馬有很大的相似之處,譬如說現(xiàn)在的灰鴿子遠(yuǎn)程控制軟件〔企業(yè)版〕,它具有兩種遠(yuǎn)程控制形式:服務(wù)端自動上線連接型和客戶端主動連接控制型,同時擁有兩者的所有功能。它可以被當(dāng)作木馬來作為入侵遠(yuǎn)程電腦的工具,并且監(jiān)控遠(yuǎn)程攝像頭的功能更使對方失去個人私隱。但如果客戶端為主動方式連接服務(wù)端時,服務(wù)端可以接受多個客戶連接,所以視頻、語音的發(fā)送可以實現(xiàn)遠(yuǎn)程教學(xué),遠(yuǎn)程協(xié)助等功能。因此遠(yuǎn)程控制和木
83、馬兩者幾乎找不到界線,但從最初的用途來說,它們應(yīng)該有以下區(qū)別的:</p><p> 遠(yuǎn)程連接的方式不同:木馬屬于服務(wù)端自動上線連接型,即一運(yùn)行就上線連接指定IP,并且如果控制端沒運(yùn)行,它會不斷重新連接;而遠(yuǎn)程控制屬于客戶端主動連接控制型,方便之處是可以從不同IP的電腦去連接已經(jīng)安裝服務(wù)端的主機(jī)。</p><p> 隱藏機(jī)制不同:木馬一般注冊為系統(tǒng)服務(wù),偽裝為類似系統(tǒng)進(jìn)程的程序,用戶不能
84、輕易關(guān)閉它;而遠(yuǎn)程控制服務(wù)端可以按其應(yīng)用考慮是否隱藏和是否能夠被關(guān)閉。</p><p> 用途不同:木馬主要是達(dá)到竊取別人主機(jī)各種信息的目的;而遠(yuǎn)程控制可以作為網(wǎng)管管理機(jī)房的工具,也可以是老師遠(yuǎn)程教學(xué)的助手,更是遠(yuǎn)程辦公的理想軟件。</p><p> 遠(yuǎn)程控制因為進(jìn)一步克服了由于地域性差異所造成的不便性,所以在網(wǎng)絡(luò)管理、遠(yuǎn)程技術(shù)支持、遠(yuǎn)程交流、遠(yuǎn)程辦公等領(lǐng)域有著非常廣泛的應(yīng)用。因此,設(shè)
85、計一個遠(yuǎn)程控制軟件,不光包含很強(qiáng)的網(wǎng)絡(luò)處理技術(shù),還具有廣泛的實用價值。遠(yuǎn)程控制的主要應(yīng)用如下:</p><p> 遠(yuǎn)程辦公:這種遠(yuǎn)程的辦公方式不僅大大緩解了城市交通狀況,減少了環(huán)境污染,還免去了人們上下班路上奔波的辛勞,更可以提高企業(yè)員工的工作效率和工作興趣。</p><p> 遠(yuǎn)程技術(shù)支持:通常,遠(yuǎn)距離的技術(shù)支持必須依賴技術(shù)人員和用戶之間的電話交流來進(jìn)行,這種交流既耗時又容易出錯。許
86、多用戶對電腦知道得很少,然而當(dāng)遇到問題時,他們必須向無法看到電腦屏幕的技術(shù)人員描述問題的癥狀。有了遠(yuǎn)程控制技術(shù),技術(shù)人員就可以遠(yuǎn)程控制用戶的電腦,就像直接操作本地電腦一樣,只需要用戶的簡單幫助就可以得到該機(jī)器存在的問題的第一手材料,很快就可以找到問題的所在,并加以解決。</p><p> 遠(yuǎn)程教學(xué):教師和學(xué)生之間可以利用這種遠(yuǎn)程控制技術(shù)實現(xiàn)教學(xué)問題的交流,學(xué)生可以不用見到老師,就得到老師手把手的輔導(dǎo)和講授。學(xué)生
87、還可以直接在電腦中進(jìn)行習(xí)題的演算和求解,在此過程中,教師能夠輕松看到學(xué)生的解題思路和步驟,并加以實時的指導(dǎo)。</p><p> 遠(yuǎn)程維護(hù)和管理:網(wǎng)絡(luò)管理員或者普通用戶可以通過遠(yuǎn)程控制技術(shù)為遠(yuǎn)端的電腦安裝和配置軟件、下載并安裝軟件修補(bǔ)程序、配置應(yīng)用程序和進(jìn)行系統(tǒng)軟件設(shè)置。</p><p> 2.2 系統(tǒng)可行性分析</p><p> 可行性研究的任務(wù)不是具體解決問
88、題,而是研究問題的范圍,探索這個問題是否值得去解,是否有可行的方法??尚行苑治鰧嵸|(zhì)上是要進(jìn)行一次大大壓縮簡化了的系統(tǒng)分析和設(shè)計的過程,也就是在較高層次上以較抽象的方式進(jìn)行的系統(tǒng)分析和設(shè)計的過程。要研究每一種解法的可行性,一般說來,應(yīng)從經(jīng)濟(jì)可行性、技術(shù)可行性、操作可行性等方面研究可行性。</p><p> 2.2.1 經(jīng)濟(jì)可行性</p><p> 本課題設(shè)計成本低廉,要的只是兩個ISP分
89、發(fā)的IP地址,而且這也多用于局域網(wǎng)或企業(yè)網(wǎng)等內(nèi)網(wǎng),就更談不上成本上的問題。但是如果需要對程序的質(zhì)量提高可以購買加密算法,對傳輸數(shù)據(jù)進(jìn)行加密。</p><p> 2.2.2 技術(shù)可行性</p><p> 本課題設(shè)計所用到的一系列的技術(shù)已是累積了幾十年的技術(shù),這些技術(shù)在這么多年的發(fā)展中并沒有被淘汰,反而是越來越來熱門。當(dāng)初遠(yuǎn)程協(xié)助這門技術(shù)在DOS時代就已經(jīng)存在,只是受網(wǎng)絡(luò)的制約,但是此時這
90、門技術(shù)還是受網(wǎng)絡(luò)技術(shù)制約著。網(wǎng)絡(luò)流量的問題是造成所有通信程序的不穩(wěn)定性的罪魁禍?zhǔn)?。但是本課題設(shè)計在局域網(wǎng)中是完全能夠?qū)崿F(xiàn)的,而且也是專門為企業(yè)網(wǎng)內(nèi)部所設(shè)計,因為數(shù)據(jù)信息沒被加密,如果想走Internet,則需建立VPN。</p><p> 2.2.3 操作可行性</p><p> 根據(jù)系統(tǒng)的操作是否簡單易懂,是否為用戶所接受,從操作的角度研究系統(tǒng)的可行性。本課題設(shè)計操作簡單,客戶端安裝
91、后無需其它操作,服務(wù)端待客戶端自動連接后,則可以對其屏幕、文件、注冊表等進(jìn)行操作,完全像操作本地機(jī)器一樣簡單。</p><p> 綜合以上三方面的可行性分析,本課題設(shè)計的操作是可行的。</p><p> 2.3 功能需求分析</p><p> 功能需求是對軟件系統(tǒng)的一項基本需求,這方面的需求指定系統(tǒng)必須提供的服務(wù)。根據(jù)對一般的遠(yuǎn)程協(xié)助的調(diào)查了解,該系統(tǒng)應(yīng)該至少
92、包含以下幾個功能:</p><p> 1、服務(wù)端對客戶端的屏幕監(jiān)控</p><p> 遠(yuǎn)程協(xié)助系統(tǒng)就是要解決那些難以用語言描述的軟件問題,協(xié)</p><p> 助端(服務(wù)端)如果能實時的看見被協(xié)助端(客戶端)的系統(tǒng)桌面,那將大大提高解決問題的效率。當(dāng)然,為了更方便的操作,協(xié)助端還必須能控制被協(xié)助端的鼠標(biāo)和鍵盤。系統(tǒng)服務(wù)端桌面監(jiān)控的用例圖如圖2.1所示:<
93、/p><p> 圖2.1 屏幕控制用例圖</p><p> 2、服務(wù)端對客戶端文件操作</p><p> 服務(wù)端如果僅僅能監(jiān)控客戶端桌面,那幫助也許沒那么大,比</p><p> 如客戶端要修復(fù)一些文件,而在客戶端本地硬盤中又沒有相應(yīng)的修復(fù)工具,此時服務(wù)端也是無能為力的。當(dāng)然,可以通過QQ、MSN等通訊工具傳輸,這樣做畢竟也是很麻煩的,因
94、此服務(wù)端能實現(xiàn)對客戶端的文件遠(yuǎn)程操作則是不可或缺的。文件操作包括:上傳文件、下載文件、創(chuàng)建文件夾、執(zhí)行遠(yuǎn)程程序等等。該功能模塊的用例圖如圖2.2所示:</p><p> 圖2.2 文件操作用例圖</p><p> 服務(wù)端對客戶端的高級操作</p><p> 服務(wù)端向客戶端發(fā)送一條命令,客戶端針對該命令分別枚舉出</p><p> 客戶
95、端的注冊表、系統(tǒng)服務(wù)、進(jìn)程等,再以文本方式發(fā)送給服務(wù)端,服務(wù)端獲取到信息后,則可以對注冊表、系統(tǒng)服務(wù)、進(jìn)程做刪除、添加、結(jié)束等操作。</p><p><b> 2.4 系統(tǒng)流程圖</b></p><p> 首先運(yùn)行服務(wù)器端,然后安裝客戶端后,客戶端安裝好之后就會不斷的嘗試連接服務(wù)器,連接成功后就會想服務(wù)器端發(fā)送消息表明已經(jīng)登錄了,接著服務(wù)器端就會發(fā)送命令給客戶端,
96、客戶端根據(jù)服務(wù)端發(fā)送的命令執(zhí)行屏幕、文件注冊表、服務(wù)、進(jìn)程等操作。執(zhí)行完之后,客戶端就會發(fā)送一個消息給服務(wù)器端,該消息是執(zhí)行的結(jié)果,服務(wù)器端收到消息后,就會將消息顯示出來。系統(tǒng)流程圖如圖2.3所示:</p><p> 圖2.3 系統(tǒng)流程圖</p><p> 3 遠(yuǎn)程通信與控制程序設(shè)計</p><p> 經(jīng)過需求分析階段,在軟件需求分析階段已經(jīng)弄清楚了各種需求,
97、較好地解決了所開發(fā)的系統(tǒng)“做什么”的問題,并已在軟件需求說明書和數(shù)據(jù)要求說明書中詳盡和充分地闡明了這些需求以后,下一步就要著手對軟件系統(tǒng)的結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、用戶界面等進(jìn)行設(shè)計。</p><p> 3.1 系統(tǒng)設(shè)計使用工具</p><p> 本系統(tǒng)采用Visual C++ 6.0作為開發(fā)工具,Visual C++ 6.0源代碼編輯器功能強(qiáng)大,使用非常方便。它提供了語句自動完成功能,編輯輸入
98、源程序時能自動顯示當(dāng)前對象的成員變量和成員函數(shù),并表明函數(shù)的參數(shù)類型。</p><p> 調(diào)試使用VMware Workstation虛擬機(jī)搭建實驗環(huán)境,分別開啟客戶端主機(jī)和服務(wù)端主機(jī)。</p><p> 3.2 系統(tǒng)模塊的設(shè)計</p><p> 3.2.1 模塊設(shè)計</p><p> 本系統(tǒng)面向的對象有兩種,一種是服務(wù)端,一種是客戶
99、端。服務(wù)端只要是向客戶端發(fā)送操作命令,客戶端解析命令后執(zhí)行相應(yīng)操作,然后將結(jié)果返回給服務(wù)端,服務(wù)端再將結(jié)果顯示出來。</p><p> 3.2.2 屏幕監(jiān)控模塊設(shè)計</p><p> 屏幕監(jiān)控,也就是將客戶端的屏幕截圖,然后發(fā)送給服務(wù)端。由于截圖圖片格式為BMP,一幀圖像數(shù)據(jù)量很大,因此在此模塊中引用第三方開源類庫CxImage,和壓縮庫zlib,將截圖在內(nèi)存中壓縮成JPEG格式,然后
100、再調(diào)用zlib的壓縮函數(shù)進(jìn)一步對JPEG壓縮,最后再發(fā)送給服務(wù)端。鼠標(biāo)和鍵盤的操作則是通過模擬來實現(xiàn),在服務(wù)端捕獲鼠標(biāo)鍵盤操作后,服務(wù)端的命令連接就會將捕獲的結(jié)果發(fā)送到客戶端,客戶端再通過調(diào)用mouse_event和keybd_event這兩個API函數(shù)進(jìn)行模擬鼠標(biāo)鍵盤操作。該模塊大致流程圖如圖3.1所示:</p><p> 圖3.1 屏幕監(jiān)控大致流程圖</p><p> 3.2.3
101、文件操作模塊設(shè)計</p><p> 文件操作,包括文件上傳、文件下載、刪除文件、執(zhí)行遠(yuǎn)程程序。當(dāng)然本系統(tǒng)還需要通過判斷客戶對文件圖標(biāo)的不同操作來判斷操作人對文件所作的不同操作,然后根據(jù)判斷結(jié)果執(zhí)行命令。該模塊大致流程圖如圖3.2所示:</p><p> 圖3.2 文件操作大致流程圖</p><p> 3.2.4 注冊表操作模塊設(shè)計</p><
102、;p> 注冊表是為Windows NT和Windows95中所有32位硬件/驅(qū)動和32位應(yīng)用程序設(shè)計的數(shù)據(jù)文件。16位驅(qū)動在Winnt下無法工作,所以所有設(shè)備都通過注冊表來控制,一般這些 是通過BIOS來控制的。在Win95下,16位驅(qū)動會繼續(xù)以實模式方式設(shè)備工作,它們使用system.ini來控制。16位應(yīng)用程序會工作在NT或者Win95 下,它們的程序仍然會參考win.ini和system.ini文件獲得信息和控制。在沒有注
103、冊表的情況下,操作系統(tǒng)不會獲得必須的信息來運(yùn)行和控制附屬的設(shè)備和應(yīng)用程序及正確響應(yīng)用戶的輸入。</p><p> 注冊表操作屬于命令操作,命令操作傳輸?shù)臄?shù)據(jù)量小,響應(yīng)快。為了客戶端程序能正常對進(jìn)程、服務(wù)等操作,還必須對客戶端進(jìn)程進(jìn)行提升權(quán)限操作。</p><p> 3.2.5 發(fā)送信息模塊設(shè)計</p><p> 對于信息的發(fā)送,本系統(tǒng)設(shè)計得相對簡單,僅發(fā)送一些
104、文字信息。客戶端通過編輯框編輯好將要發(fā)送的信息內(nèi)容,確認(rèn)發(fā)送后,產(chǎn)生windows消息,然后系統(tǒng)通過建立的Socket套接字傳輸文字信息及編輯時的相應(yīng)的字體格式等。服務(wù)端接收后按照客戶端編輯的信息條件將文字信息打印在屏幕上方。屏幕未刷新時,文字信息將一直留在屏幕上方,屏幕刷新后,文字信息消失。</p><p> 3.2.6 API HOOK模塊設(shè)計</p><p> 本系統(tǒng)采用API
105、HOOK技術(shù)對客戶端進(jìn)程進(jìn)行守護(hù),達(dá)到防止客戶端進(jìn)程被惡意結(jié)束的目的。該功能采用了微軟的開源類庫detours,對OpenProcess和TerminateProcess這兩個系統(tǒng)API進(jìn)行HOOK,從而實現(xiàn)對客戶端進(jìn)程進(jìn)行守護(hù)的目的。</p><p> 3.3 客戶端與服務(wù)器連接設(shè)計</p><p> CAsyncSocket重載了SOCKET連接和斷開的消息事件,用戶可以在這些事件
106、中判斷SOCKET的連接情況,但是斷開消息事件在一種情況下無法觸發(fā),也就是網(wǎng)線被拔掉或其中一方斷電時,為了解決這種情況,可以在服務(wù)端和客戶端中都添加一個連接時鐘,周期性的給對方發(fā)送一個心跳包,如果發(fā)送失敗則表示對方已經(jīng)斷開連接,此時則進(jìn)入斷開重連狀態(tài)。</p><p> 對于異步非阻塞的SOCKET來說,連接成功與否是在其OnConnect事件里判斷的,該事件函數(shù)原型為:void OnConnect(int 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文---網(wǎng)絡(luò)遠(yuǎn)程通信與控制程序設(shè)計
- cs模式遠(yuǎn)程控制程序設(shè)計畢業(yè)論文
- cs模式遠(yuǎn)程控制程序設(shè)計畢業(yè)論文
- 網(wǎng)絡(luò)遠(yuǎn)程通信和控制程序畢業(yè)設(shè)計
- 畢業(yè)論文--電鑄過程plc控制程序設(shè)計
- 畢業(yè)論文--電鑄過程plc控制程序設(shè)計
- 畢業(yè)設(shè)計---計算機(jī)遠(yuǎn)程控制程序設(shè)計
- 基本控制程序設(shè)計
- 畢業(yè)論文范文——基于plc作息時間控制程序設(shè)計
- 畢業(yè)論文---電鍍自動生產(chǎn)線plc控制程序設(shè)計
- 塑料注塑成型生產(chǎn)線控制程序設(shè)計【畢業(yè)論文+cad】
- 電鍍自動生產(chǎn)線plc控制程序設(shè)計畢業(yè)論文
- 自動門控制程序設(shè)計畢業(yè)設(shè)計
- 電鍍自動生產(chǎn)線plc控制程序設(shè)計(畢業(yè)論文doc)
- 基于plc的電磁泵控制程序設(shè)計畢業(yè)設(shè)計
- 設(shè)計與開發(fā)控制程序
- 太赫茲時域系統(tǒng)優(yōu)化與控制程序設(shè)計.pdf
- 畢業(yè)設(shè)計---基于plc五層電梯的控制程序設(shè)計
- 基于vb的先進(jìn)控制程序的研究與開發(fā)畢業(yè)論文
- 發(fā)電控制系統(tǒng)及控制程序設(shè)計.pdf
評論
0/150
提交評論