




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于udp協(xié)議的遠(yuǎn)程控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)摘 要:以往的遠(yuǎn)程控制軟件都采用tcp連接,tcp要始終與服務(wù)端保持連接,所以占用資源較大,上線主機(jī)太多的話會(huì)出現(xiàn)很多問題。udp則不需要持久保持連接,它是無連接協(xié)議,占用資源少,通信速度快。即使上線主機(jī)再多,也不會(huì)出現(xiàn)卡機(jī)掉線的情況??蛻舳撕头?wù)端之間采用udp協(xié)議傳送信息??蛻舳撕头?wù)端均有udp通訊服務(wù)端和udp通訊客戶端,且udp通訊服務(wù)端一直處于偵聽狀態(tài),一旦收到消息立即處理,同時(shí)還可以根據(jù)需要,利用udp通訊客戶端方發(fā)送信息。遠(yuǎn)程控制軟件通常由兩部分組成: 一部分是客戶端(控制端)程序clien t, 另一部分是服務(wù)器端(受控端)程序serv
2、er。使用前需要在控制端運(yùn)行客戶端程序, 在受控端運(yùn)行服務(wù)器程序。 然后由控制端向受控端發(fā)出信號(hào), 建立一個(gè)特殊的遠(yuǎn)程服務(wù), 再通過這個(gè)服務(wù), 使用各種遠(yuǎn)程控制功能發(fā)送遠(yuǎn)程控制命令, 控制受控端電腦中的各種應(yīng)用程序運(yùn)行。關(guān)鍵詞:udp 協(xié)議 c/s結(jié)構(gòu) 遠(yuǎn)程控制design and implementation remote control system based udp protocolsabstract:the remote control software, the tcp connections, tcp will always remain connected with the s
3、erver resources, so much larger, the needle thread host too much will a lot of problems. dont need to maintain a lasting udp connections, it is no connection, the land resources and communications speed. even if the needle thread host more, and will not occur for lost. client and server udp agreemen
4、t between the transmission of information. the client and server are udp service or udp communications client and server udp communications remained listening, once received news immediately, and also based on needs, the use of udp send information. communications client. remote control software usu
5、ally consists of two parts: the part of the client side application (control) clien t, the other part of the controlled end server () application server. use to control the client program run, the controlled end server running programs. then the controlling end to end a signal controlled, and establ
6、ish a special the remote services, through the service, the use of remote control functions of a remote control command and control of computer controlled end of the application.keyword:udp protocols c/s structure remote control目錄第一章 引言31.1 本課題的研究背景和意義31.2 國(guó)內(nèi)外研究現(xiàn)狀3第二章 udp協(xié)議的基本情況42.1 udp的定義42.2 udp協(xié)議
7、的概述42.3 udp的幾個(gè)特性42.4 udp的數(shù)據(jù)報(bào)格式52.5 udp協(xié)議的應(yīng)用5第三章 遠(yuǎn)程控制技術(shù)的概述63.1 遠(yuǎn)程控制技術(shù)的定義63.2 遠(yuǎn)程控制技術(shù)的原理63.3 基于udp協(xié)議的遠(yuǎn)程控制的機(jī)制6第四章 系統(tǒng)設(shè)計(jì)74.1基本原理74.2客戶端檢測(cè)流程74.3 服務(wù)端監(jiān)控操作844具體實(shí)現(xiàn)過程114.4.1 進(jìn)程檢測(cè)114.4.2 客戶端和服務(wù)端的通訊114.4.3創(chuàng)建演示程序12結(jié)論16參考文獻(xiàn)17第一章 引言1.1 本課題的研究背景和意義隨著社會(huì)、科技、經(jīng)濟(jì)的不斷發(fā)展,遠(yuǎn)程控制技術(shù)的應(yīng)用范圍也在不斷拓展,從最初銀行、軍事、機(jī)要部門等特殊行業(yè)領(lǐng)域的應(yīng)用已經(jīng)延伸到了今天的電業(yè)部門
8、、商業(yè)部門、普通工礦企業(yè)、道路交通領(lǐng)域、學(xué)校教學(xué)應(yīng)用、衛(wèi)生醫(yī)療部門以及賓館酒店行業(yè)等等,其卓越的功能也日益受到各個(gè)應(yīng)用行業(yè)的重視和青睞,但是許多遠(yuǎn)程監(jiān)控軟件都需要配有硬件設(shè)備,這不僅使得實(shí)際應(yīng)用的成本升高,而且也使實(shí)施應(yīng)用增加了技術(shù)障礙。雖然有諸多問題的存在,但是我們應(yīng)該認(rèn)識(shí)到遠(yuǎn)程控制技術(shù)的研究,不僅充分利用了現(xiàn)有資源,拓寬了因特網(wǎng)的利用范圍,而且也使遠(yuǎn)程控制能夠減少成本擴(kuò)大遠(yuǎn)程化距離,實(shí)現(xiàn)任意節(jié)點(diǎn)的訪問機(jī)制,并進(jìn)入一般的應(yīng)用領(lǐng)域,比如,進(jìn)入家庭,人們通過因特網(wǎng)控制家用電器,采用因特網(wǎng)作為遠(yuǎn)程控制平臺(tái),是一項(xiàng)很有前途和潛力的技術(shù),另外它可以應(yīng)用到設(shè)備遠(yuǎn)程診斷、遠(yuǎn)程監(jiān)測(cè)、遙控等領(lǐng)域。因特網(wǎng)的出現(xiàn)
9、及其發(fā)展推動(dòng)了科學(xué)技術(shù)的各個(gè)方面,并使之取得了巨大的進(jìn)步,利用因特網(wǎng),可以使遠(yuǎn)程控制技術(shù)得到大范圍的應(yīng)用,從而方便人們的生活。1.2 國(guó)內(nèi)外研究現(xiàn)狀目前,基于因特網(wǎng)的遠(yuǎn)程控制國(guó)內(nèi)外都有不同程度的研究。相對(duì)來說,由于西方國(guó)家在信息技術(shù)和計(jì)算機(jī)控制技術(shù)的發(fā)展上的優(yōu)勢(shì),他們?cè)谘芯窟h(yuǎn)程控制方面相對(duì)早些,而且有些公司有相關(guān)的初級(jí)產(chǎn)品問世。國(guó)內(nèi)由于因特網(wǎng)的飛速發(fā)展,近幾年也開始積極的研究。國(guó)內(nèi)外在基于因特網(wǎng)的遠(yuǎn)程機(jī)器人控制方面的研究相對(duì)其他領(lǐng)域要多一些。例如美國(guó)伯克立大學(xué)研制的是一個(gè)通過因特網(wǎng)遠(yuǎn)程控制的種植花草工業(yè)機(jī)器人手臂。擁護(hù)通過機(jī)器人手臂上的攝像機(jī)所傳輸?shù)膱D像,對(duì)這個(gè)花園內(nèi)進(jìn)行簡(jiǎn)單的操作。這些基于u
10、dp協(xié)議的遠(yuǎn)程控制系統(tǒng)普遍采用了客戶/服務(wù)器網(wǎng)絡(luò)模型,現(xiàn)場(chǎng)采用攝像機(jī)來監(jiān)視,并通過網(wǎng)絡(luò)發(fā)出指令。當(dāng)前,由于網(wǎng)絡(luò)基礎(chǔ)設(shè)施還不夠完善,所以監(jiān)視圖像由于數(shù)據(jù)量大,其傳輸時(shí)間過長(zhǎng)。即使是采用了數(shù)據(jù)壓縮技術(shù),也仍然有很大的數(shù)據(jù)量需要傳輸,因而由此產(chǎn)生的遠(yuǎn)程控制時(shí)間延遲也必然很大。此外,這類系統(tǒng)普遍采用瘦客戶/肥服務(wù)器的網(wǎng)絡(luò)模型,監(jiān)控端的控制操作功能過于簡(jiǎn)單,都只是發(fā)一些簡(jiǎn)單的指令,而不能實(shí)現(xiàn)一些復(fù)雜的必要的邏輯處理功能。第三,這類系統(tǒng)在處理上由于時(shí)間延遲影響現(xiàn)場(chǎng)控制系統(tǒng)不穩(wěn)定時(shí),仍然采用的執(zhí)行-等待-執(zhí)行-等待的單步執(zhí)行流程,生產(chǎn)設(shè)備運(yùn)行效率相當(dāng)?shù)拖拢谒?,大量的采用以圖像監(jiān)視為主的方式,雖然可以使得監(jiān)
11、控人員更能直觀的感受到現(xiàn)場(chǎng)情況,便與監(jiān)控人員的控制;但是我們應(yīng)該注意到,有些設(shè)備的被監(jiān)控狀態(tài)是難以用圖像方式表示出來的,比如溫度、速度、壓力這類精確的數(shù)值量;此外有些采用圖像傳輸?shù)臄?shù)據(jù)量也可以采用通過數(shù)據(jù)傳輸關(guān)鍵數(shù)據(jù)以在監(jiān)控端進(jìn)行實(shí)況模擬圖,這樣就會(huì)減少數(shù)據(jù)量,而使數(shù)據(jù)傳輸速度大大提高。第二章 udp協(xié)議的基本情況2.1 udp的定義udp 是user datagram protocol的簡(jiǎn)稱, 中文名是用戶數(shù)據(jù)包協(xié)議,是 osi 參考模型中一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù)。它是ietf rfc 768是udp的正式規(guī)范。udp協(xié)議(user datagram pr
12、otocol,用戶數(shù)據(jù)報(bào)文協(xié)議)與tcp協(xié)議一樣也是osi傳輸層上的一個(gè)通信協(xié)議。不過udp協(xié)議是一個(gè)面向無連接的協(xié)議(tcp是向面連接的協(xié)議)。一個(gè)udp連接的建立,不必象tcp協(xié)議那樣需要服務(wù)器端偵聽,也不需要有客戶機(jī)端請(qǐng)求連接和服務(wù)器端建立連接后雙方才能通信。2.2 udp協(xié)議的概述udp協(xié)議的全稱是用戶數(shù)據(jù)包協(xié)議,在網(wǎng)絡(luò)中它與tcp協(xié)議一樣用于處理數(shù)據(jù)包。在osi模型中,在第四層傳輸層,處于ip協(xié)議的上一層。udp有不提供數(shù)據(jù)包分組、組裝和不能對(duì)數(shù)據(jù)包進(jìn)行排序的缺點(diǎn),也就是說,當(dāng)報(bào)文發(fā)送之后,是無法得知其是否安全完整到達(dá)的。udp用來支持那些需要在計(jì)算機(jī)之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)
13、視頻會(huì)議系統(tǒng)在內(nèi)的眾多的客戶/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用udp協(xié)議。udp協(xié)議從問世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類似協(xié)議所掩蓋,但是即使是在今天,udp仍然不失為一項(xiàng)非常實(shí)用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。 與所熟知的tcp(傳輸控制協(xié)議)協(xié)議一樣,udp協(xié)議直接位于ip(網(wǎng)際協(xié)議)協(xié)議的頂層。根據(jù)osi(開放系統(tǒng)互連)參考模型,udp和tcp都屬于傳輸層協(xié)議。 udp協(xié)議的主要作用是將網(wǎng)絡(luò)數(shù)據(jù)流量壓縮成數(shù)據(jù)包的形式。一個(gè)典型的數(shù)據(jù)包就是一個(gè)二進(jìn)制數(shù)據(jù)的傳輸單位。每一個(gè)數(shù)據(jù)包的前8個(gè)字節(jié)用來包含報(bào)頭信息,剩余字節(jié)則用來包含具體的傳輸數(shù)據(jù)。2.3 udp的幾個(gè)特性(1) udp
14、是一個(gè)無連接協(xié)議,傳輸數(shù)據(jù)之前源端和終端不建立連接,當(dāng)它想傳送時(shí)就簡(jiǎn)單地去抓取來自應(yīng)用程序的數(shù)據(jù),并盡可能快地把它扔到網(wǎng)絡(luò)上。在發(fā)送端,udp傳送數(shù)據(jù)的速度僅僅是受應(yīng)用程序生成數(shù)據(jù)的速度、計(jì)算機(jī)的能力和傳輸帶寬的限制;在接收端,udp把每個(gè)消息段放在隊(duì)列中,應(yīng)用程序每次從隊(duì)列中讀一個(gè)消息段。 (2) 由于傳輸數(shù)據(jù)不建立連接,因此也就不需要維護(hù)連接狀態(tài),包括收發(fā)狀態(tài)等,因此一臺(tái)服務(wù)機(jī)可同時(shí)向多個(gè)客戶機(jī)傳輸相同的消息。 (3) udp信息包的標(biāo)題很短,只有8個(gè)字節(jié),相對(duì)于tcp的20個(gè)字節(jié)信息包的額外開銷很小。 (4) 吞吐量不受擁擠控制算法的調(diào)節(jié),只受應(yīng)用軟件生成數(shù)據(jù)的速率、傳輸帶寬、源端和終端
15、主機(jī)性能的限制。 (5)udp使用盡最大努力交付,即不保證可靠交付,因此主機(jī)不需要維持復(fù)雜的鏈接狀態(tài)表(這里面有許多參數(shù))。 (6)udp是面向報(bào)文的。發(fā)送方的udp對(duì)應(yīng)用程序交下來的報(bào)文,在添加首部后就向下交付給ip層。既不拆分,也不合并,而是保留這些報(bào)文的邊界,因此,應(yīng)用程序需要選擇合適的報(bào)文大小。 雖然udp是一個(gè)不可靠的協(xié)議,但它是分發(fā)信息的一個(gè)理想?yún)f(xié)議。例如,在屏幕上報(bào)告股票市場(chǎng)、在屏幕上顯示航空信息等等。udp也用在路由信息協(xié)議rip(routing information protocol)中修改路由表。在這些應(yīng)用場(chǎng)合下,如果有一個(gè)消息丟失,在幾秒之后另一個(gè)新的消息就會(huì)替換它。u
16、dp廣泛用在多媒體應(yīng)用中,例如,progressive networks公司開發(fā)的realaudio軟件,它是在因特網(wǎng)上把預(yù)先錄制的或者現(xiàn)場(chǎng)音樂實(shí)時(shí)傳送給客戶機(jī)的一種軟件,該軟件使用的realaudio audio-on-demand protocol協(xié)議就是運(yùn)行在udp之上的協(xié)議,大多數(shù)因特網(wǎng)電話軟件產(chǎn)品也都運(yùn)行在udp之上。2.4 udp的數(shù)據(jù)報(bào)格式在這個(gè)數(shù)據(jù)報(bào)格式中,源端口是可選域,當(dāng)其有意義時(shí),指的是發(fā)送應(yīng)用程序的udp端口。如果不使用它,則在此域中填0。目的端口在有特定的目的網(wǎng)絡(luò)地址時(shí)有意義,指目標(biāo)應(yīng)用程序的udp端口。長(zhǎng)度指的是此用戶數(shù)據(jù)報(bào)長(zhǎng)度的八進(jìn)制表示(這表明最小的數(shù)據(jù)報(bào)長(zhǎng)度是
17、8)。校驗(yàn)和同樣是一種簡(jiǎn)單的數(shù)學(xué)運(yùn)算,用于檢查udp消息中的位級(jí)錯(cuò)誤。是對(duì)ip頭、udp頭和數(shù)據(jù)中信息包頭的數(shù)位取反之和,再取反得到的。udp協(xié)議包不具備tcp協(xié)議包復(fù)雜的可靠性與控制機(jī)制,沒有“序列”和“確認(rèn)”兩個(gè)字段。2.5 udp協(xié)議的應(yīng)用既然udp是一種不可靠的網(wǎng)絡(luò)協(xié)議,那么還有什么使用價(jià)值或必要呢?其實(shí)不然,在有些情況下udp協(xié)議可能會(huì)變得非常有用。因?yàn)閡dp具有tcp所望塵莫及的速度優(yōu)勢(shì)。雖然tcp協(xié)議中植入了各種安全保障功能,但是在實(shí)際執(zhí)行的過程中會(huì)占用大量的系統(tǒng)開銷,無疑使速度受到嚴(yán)重的影響。反觀udp由于排除了信息可靠傳遞機(jī)制,將安全和排序等功能移交給上層應(yīng)用來完成,極大降低
18、了執(zhí)行時(shí)間,使速度得到了保證。 關(guān)于udp協(xié)議的最早規(guī)范是rfc768,1980年發(fā)布。盡管時(shí)間已經(jīng)很長(zhǎng),但是udp協(xié)議仍然繼續(xù)在主流應(yīng)用中發(fā)揮著作用。包括視頻電話會(huì)議系統(tǒng)在內(nèi)的許多應(yīng)用都證明了udp協(xié)議的存在價(jià)值。因?yàn)橄鄬?duì)于可靠性來說,這些應(yīng)用更加注重實(shí)際性能,所以為了獲得更好的使用效果(例如,更高的畫面幀刷新速率)往往可以犧牲一定的可靠性(例如,會(huì)面質(zhì)量)。這就是udp和tcp兩種協(xié)議的權(quán)衡之處。根據(jù)不同的環(huán)境和特點(diǎn),兩種傳輸協(xié)議都將在今后的網(wǎng)絡(luò)世界中發(fā)揮更加重要的作用。第三章 遠(yuǎn)程控制技術(shù)的概述3.1 遠(yuǎn)程控制技術(shù)的定義計(jì)算機(jī)遠(yuǎn)程控制技術(shù)是在網(wǎng)絡(luò)上由一臺(tái)計(jì)算機(jī)遠(yuǎn)距離去控制另一臺(tái)或多臺(tái)計(jì)算
19、機(jī)的技術(shù)。目前遠(yuǎn)程控制方式有幾種:遠(yuǎn)程登錄方式、client/server方式、web方式。其中client/server方式用的最為廣泛。 3.2 遠(yuǎn)程控制技術(shù)的原理遠(yuǎn)程控制軟件通常由兩部分組成: 一部分是客戶端(控制端)程序clien t, 另一部分是服務(wù)器端(受控端)程序server。使用前需要在控制端運(yùn)行客戶端程序, 在受控端運(yùn)行服務(wù)器程序。 然后由控制端向受控端發(fā)出信號(hào), 建立一個(gè)特殊的遠(yuǎn)程服務(wù), 再通過這個(gè)服務(wù), 使用各種遠(yuǎn)程控制功能發(fā)送遠(yuǎn)程控制命令, 控制受控端電腦中的各種應(yīng)用程序運(yùn)行, 這種遠(yuǎn)程控制方式稱為基于遠(yuǎn)程服務(wù)的遠(yuǎn)程控制。遠(yuǎn)程控制軟件實(shí)際上是一種客戶機(jī)/服務(wù)器程序,服務(wù)
20、器程序安裝在被控制的計(jì)算機(jī)端,客戶端安裝在控制端,客戶端發(fā)送命令,服務(wù)器端接受命令并執(zhí)行相應(yīng)的操作因此解決網(wǎng)絡(luò)客戶端與服務(wù)器端的通信就成了遠(yuǎn) 程控 制實(shí)現(xiàn)的基礎(chǔ)。winsock、通信是網(wǎng)絡(luò)通信過程中應(yīng)用廣泛、使用靈活的一種方式,本文使用winsock控件實(shí)現(xiàn)遠(yuǎn)程計(jì)算 機(jī)的連 接 ,并通過 tcp 或者udp協(xié)議進(jìn)行數(shù)據(jù)交換。這兩種協(xié)議之間的重要區(qū)別在于它們的連接狀態(tài)不同: tcp協(xié)議是基于連接的協(xié)議,提供可靠的流服務(wù);而udp協(xié)議是一種無連接協(xié)議,提供數(shù)據(jù)報(bào)文服務(wù) ,使用udp協(xié)議系統(tǒng)資源開銷小,傳輸速度快 ,但可靠性不如tcp協(xié)議。3.3 基于udp協(xié)議的遠(yuǎn)程控制的機(jī)制udp(user da
21、tagram protocol,意為用戶報(bào)文協(xié)議)是internet上廣泛采用的通信協(xié)議之一。與tcp協(xié)議不同,它是一種非連接的傳輸協(xié)議,沒有確認(rèn)機(jī)制,可靠性不如tcp,但它的效率卻比tcp高,用于遠(yuǎn)程屏幕監(jiān)視還是比較適合的。同時(shí),udp控件不區(qū)分服務(wù)器端和客戶端,只區(qū)分發(fā)送端和接收端,編程上較為簡(jiǎn)單,故選用udp協(xié)議,使用c+ builder 6.0提供的tnmudp控件。 遠(yuǎn)程控制中對(duì)被控端實(shí)現(xiàn)的關(guān)機(jī)、重啟、注銷、計(jì)算機(jī)ip地址獲取、計(jì)算機(jī)鍵盤鎖定以及自動(dòng) 截屏等 功能需 要被控 端及時(shí)反應(yīng) ,且發(fā)送這些命令的消息占用的字節(jié)較少,在傳輸距離不算太長(zhǎng),信號(hào)衰減較弱的情況下,基于大量的被控端本
22、文考慮使用udp協(xié)議來進(jìn)行控制端與被 控端之間的通,尤其可以利用winsock在udp協(xié)議下的廣播功能來實(shí)現(xiàn)對(duì)全體被控端的遠(yuǎn)程關(guān)機(jī)、重啟等操作。抓屏后形成的圖像文件數(shù)據(jù)所占 的字節(jié)數(shù)是遠(yuǎn)遠(yuǎn)大于那些控制消息的,因此需要將圖像數(shù)據(jù)分塊進(jìn)行多次傳輸為了能在控制端看到完整的所截圖像,必須采用tcp協(xié)議,因?yàn)?udp協(xié)議是一種無連接協(xié)議,不能保證數(shù)據(jù)的可靠傳輸。圖1描述了主控端與被控端之間的控制和通信機(jī)制。圖1客戶端控制多臺(tái)服務(wù)器第四章 系統(tǒng)設(shè)計(jì)4.1基本原理完整的業(yè)務(wù)系統(tǒng)通常包括很多基于局域網(wǎng)的軟件模塊,而且功能差異較大的模塊常常分散在不同的計(jì)算機(jī)上,如果分別在運(yùn)行軟件模塊的計(jì)算上對(duì)進(jìn)程進(jìn)行監(jiān)控,不僅
23、浪費(fèi)計(jì)算機(jī)資源,而且工作點(diǎn)分散,工作效率不高?;赾/s結(jié)構(gòu)設(shè)計(jì)監(jiān)控系統(tǒng),將有利于系統(tǒng)的集約化管理??蛻舳硕〞r(shí)采集進(jìn)程狀態(tài),并把狀態(tài)信息發(fā)送到服務(wù)端,服務(wù)端就可以集中處理遠(yuǎn)程被監(jiān)控的程序運(yùn)行狀態(tài)信息,并對(duì)收到的消息進(jìn)行響應(yīng)??蛻舳撕头?wù)端之間采用udp協(xié)議傳送信息。客戶端和服務(wù)端均有udp通訊服務(wù)端和udp通訊客戶端,且udp通訊服務(wù)端一直處于偵聽狀態(tài),一旦收到消息立即處理,同時(shí)還可以根據(jù)需要,利用udp通訊客戶端方發(fā)送信息。4.2客戶端檢測(cè)流程客戶端發(fā)送到服務(wù)端的信息稱為“消息”。服務(wù)端對(duì)客戶端所發(fā)出的信息稱為“指令”??蛻舳笋v留程序有兩個(gè)模塊:一是定時(shí)對(duì)特定的軟件進(jìn)程進(jìn)行模塊檢測(cè),此模塊定
24、時(shí)檢測(cè)進(jìn)程并向服務(wù)端發(fā)送相關(guān)消息,進(jìn)行相關(guān)處理;二是執(zhí)行客戶端指令模塊,此模塊主要功能是執(zhí)行服務(wù)端指令。 客戶端進(jìn)程檢測(cè)及消息處理流程如圖1所示。如果進(jìn)程存在、且正常響應(yīng),則按照規(guī)定的格式發(fā)送“進(jìn)程存在、進(jìn)程響應(yīng)”信息到服務(wù)端;如果進(jìn)程不存在,先發(fā)送“進(jìn)程不存在”信息到服務(wù)端,然后按照配置文件中規(guī)定的處理方式進(jìn)行操作;如果進(jìn)程存在,但是沒有響應(yīng),則先向服務(wù)端發(fā)送“進(jìn)程存在、進(jìn)程無響應(yīng)”信息,然后按照配置文件規(guī)定的處理方式進(jìn)行操作。4.3 服務(wù)端監(jiān)控操作服務(wù)端程序?qū)λ行璞O(jiān)控的遠(yuǎn)程進(jìn)程統(tǒng)一管理時(shí),根據(jù)收到的消息做出響應(yīng)處理,并判斷是否向客戶端發(fā)送指令以及指令的內(nèi)容。雖然在檢測(cè)配置文件中規(guī)定了重啟
25、進(jìn)程或重啟計(jì)算機(jī)的操作,但為了防止檢測(cè)程序出錯(cuò)、相關(guān)進(jìn)程軟件完整性受損等客戶端計(jì)算機(jī)自身無法解決的問題,規(guī)定服務(wù)端可以向客戶端發(fā)送以下指令:“更新進(jìn)程軟件包”;“立即檢測(cè)進(jìn)程”;“重啟計(jì)算機(jī)”。 服務(wù)端消息處理及指令發(fā)送的流程如圖2所示。收到客戶端發(fā)送的“進(jìn)程存在、進(jìn)程響應(yīng)”信息時(shí),則提示“進(jìn)程正常工作”。收到客戶端發(fā)送的“進(jìn)程不存在”信息到服務(wù)端,則提示“正在重新啟動(dòng)進(jìn)程”,并記錄有關(guān)信息,進(jìn)入指令發(fā)送操作;收到客戶端發(fā)送的“進(jìn)程存在、進(jìn)程無響應(yīng)”信息時(shí),則提示“正在處理阻塞進(jìn)程”,并記錄有關(guān)信息,進(jìn)入指令發(fā)送操作。指令發(fā)送操作按以下流程進(jìn)行。4.3.1每隔30秒檢測(cè)一次網(wǎng)絡(luò)連通狀況,如持續(xù)
26、3分鐘仍無響應(yīng)時(shí),采用語(yǔ)音報(bào)警的方式,提請(qǐng)人工干預(yù),系統(tǒng)掛起,直到網(wǎng)絡(luò)通訊正常后進(jìn)入下一流程。4.3.2發(fā)出“立即檢測(cè)進(jìn)程”指令,提示“正在檢測(cè)進(jìn)程”,等待客戶端返回信息。收到“進(jìn)程存在、進(jìn)程響應(yīng)”信息后,則提示“進(jìn)程正常工作”,結(jié)束發(fā)送指令操作,否則進(jìn)入下一流程。4.3.3發(fā)出“重啟計(jì)算機(jī)”指令后,提示“正在重新啟動(dòng)計(jì)算機(jī)”,然后每隔30秒檢測(cè)一次網(wǎng)絡(luò)連通狀況,如持續(xù)5分鐘仍無響應(yīng)時(shí),采用語(yǔ)音報(bào)警的方式,提請(qǐng)人工干預(yù),系統(tǒng)掛起,直到網(wǎng)絡(luò)通訊正常后進(jìn)入下一流程。4.3.4發(fā)出“立即檢測(cè)進(jìn)程”指令,提示“正在檢測(cè)進(jìn)程”,等待客戶端返回信息。收到“進(jìn)程存在、進(jìn)程響應(yīng)”信息后,則提示“進(jìn)程正常工作”
27、,結(jié)束發(fā)送指令操作;否則進(jìn)入下一流程。4.3.5發(fā)出“更新進(jìn)程軟件包”指令后,提示“正在更新進(jìn)程軟件包”。然后每隔30秒檢測(cè)一次網(wǎng)絡(luò)連通狀況,如持續(xù)2分鐘仍無響應(yīng)時(shí),采用語(yǔ)音報(bào)警的方式,提請(qǐng)人工干預(yù),系統(tǒng)掛起,直到網(wǎng)絡(luò)通訊正常后進(jìn)入下一流程。4.3.6發(fā)出“立即檢測(cè)進(jìn)程”指令,提示“正在檢測(cè)進(jìn)程”,等待客戶端返回信息。收到“進(jìn)程存在、進(jìn)程響應(yīng)”信息后,則提示“進(jìn)程正常工作”,結(jié)束發(fā)送指令操作;否則采用語(yǔ)音報(bào)警的方式,提請(qǐng)人工操作。44具體實(shí)現(xiàn)過程4.4.1 進(jìn)程檢測(cè) 在net2.0中process類提供了可以判斷進(jìn)程是否存在或是否有響應(yīng)的方法。 假設(shè)一個(gè)需要在客戶端運(yùn)行的進(jìn)程對(duì)應(yīng)的程序名為te
28、st.exe。則探測(cè)該進(jìn)程是否存在或是否有響應(yīng)的c#代碼如下: string myprogram = test; process myprocesses = process. getprocessesbyname(myprogram); if (myprocesses.length=0) / “進(jìn)程不存在”對(duì)應(yīng)的程序段 else / “進(jìn)程存在”對(duì)應(yīng)的程序段 foreach(process myprocess in myprocesses) if (myprocess.responding) / “進(jìn)程正常工作”對(duì)應(yīng)的程序段 else / “進(jìn)程不響應(yīng)”對(duì)應(yīng)的程序段 4.4.2 客戶端和服務(wù)端
29、的通訊 利用udp網(wǎng)絡(luò)協(xié)議,可以實(shí)現(xiàn)客戶端和服務(wù)端的相互通訊。在net2.0環(huán)境下,system.net.sockets 命名空間包含一個(gè)名為udpclient的類。利用udpclient 類,可以輕松創(chuàng)建udp通訊客戶端和服務(wù)端。 c#實(shí)現(xiàn)udp通訊客戶端關(guān)鍵代碼如下: using system.net.sockets; using system.management; string remoteip=;/服務(wù)端ip int remoteport=8800;/服務(wù)端端口 ipendpoint myremoteendpoint = new ipendpoint(ipadd
30、ress.parse(remoteip), remoteport); udpclient myclient=new udpclient(); byte mydata=system.text.encoding. default.getbytes(需要發(fā)送的消息); /send方法便可以實(shí)現(xiàn)發(fā)送消息。 myclient.send(mydata,mydata.length,myremoteendpoint); 以上代碼段便可以實(shí)現(xiàn)向發(fā)送消息,而udp通訊服務(wù)端實(shí)現(xiàn)類似客戶端,關(guān)鍵代碼如下: string myip = ;/本地服務(wù)端地址 int myport
31、= 8800;/接收端口 udpclient myclient = new udpclient(myport); while (true) ipendpoint myendpoint = new ipendpoint(ipaddress.parse(myip), myport); byte mydata = myclient.receive(ref myendpoint); /獲得到達(dá)本地的信息 string myinfo=system.text.encoding. default. getstring(mydata); 4.4.3創(chuàng)建演示程序第一步,編制vclient.exe文件。新建一個(gè)a
32、pplication,將默認(rèn)窗體的name屬性設(shè)為“client”。加入tnmudp控件,name屬性設(shè)為“cudp”;localport屬性設(shè)為“1111”,讓控件cudp監(jiān)視受控機(jī)的1111端口,當(dāng)有數(shù)據(jù)發(fā)送到該口時(shí),觸發(fā)控件cudp的ondatareceived事件;remoteport屬性設(shè)為“2222”,當(dāng)控件cudp發(fā)送數(shù)據(jù)時(shí),將數(shù)據(jù)發(fā)到主控機(jī)的2222口。 在unit1.h中加入變量定義 tmemorystream *bmpstream;/將屏幕保存在流中l(wèi)ong leftsize;/發(fā)送每一筆數(shù)據(jù)后剩余的字節(jié)數(shù)void _fastcall tclient:screencap(i
33、nt leftpos,int toppos,int rightpos,int bottompos);/自定義抓屏函數(shù)在unit1.cpp中加入#define buffsize 2048/發(fā)送每一筆數(shù)據(jù)的緩沖區(qū)大小在client的oncreate事件添加代碼: void _fastcall tclient:formcreate(tobject *sender)bmpstream=new tmemorystream();在client的ondestroy事件添加代碼: void _fastcall tclient:formdestroy(tobject *sender)delete bmpstre
34、am;在控件cudp的ondatareceived事件添加代碼: void _fastcall tclient:cudpdatareceived(tcomponent *sender,int numberbytes, ansistring fromip, int port)string ctrlcode;char buf2048;string tmpstr,leftpos,toppos,rightpos,bottompos;int sendsize;tmemorystream *mystream = new tmemorystream();cudp-readstream(mystream);c
35、trlcode.setlength(numberbytes);mystream-read(&ctrlcode1, numberbytes);/讀取控制碼delete mystream;/showmessage(ctrlcode);if(ctrlcode.substring(1,4)=show)/ 控制碼前4位為“show”表示主控機(jī)發(fā)出了抓屏指令if(bmpstream-size=0)/沒有數(shù)據(jù)可發(fā),必須截屏生成數(shù)據(jù)tmpstr=ctrlcode.substring(6,ctrlcode.length()-5);leftpos=tmpstr.substring(1,tmpstr.pos(,)-
36、1);tmpstr=tmpstr.substring(leftpos.length()+2,tmpstr.length()-leftpos.length()+1);toppos=tmpstr.substring(1,tmpstr.pos(,)-1);tmpstr=tmpstr.substring(toppos.length()+2,tmpstr.length()-toppos.length()+1);rightpos=tmpstr.substring(1,tmpstr.pos(,)-1);tmpstr=tmpstr.substring(rightpos.length()+2,tmpstr.le
37、ngth()-rightpos.length()+1);bottompos=trim(tmpstr);screencap(strtoint(leftpos),strtoint(toppos),strtoint(rightpos),strtoint(bottompos);/截取屏幕if(leftsizebufsize) sendsize=bufsize;else sendsize=leftsize;bmpstream-readbuffer(buf,sendsize);leftsize=leftsize-sendsize;if(leftsize=0) bmpstream-clear();/清空流c
38、udp-remotehost=fromip;/fromip為主控機(jī)ip地址cudp-remoteport=2222;/主控機(jī)端口cudp-sendbuffer(buf,sendsize,sendsize); /將數(shù)據(jù)發(fā)到主控機(jī)的2222口其中screencap是自定義函數(shù),截取屏幕指定區(qū)域,代碼如下: void _fastcall tclient:screencap(int leftpos,int toppos,int rightpos,int bottompos)int rectwidth,rectheight;hbitmap bhandle;hdc sourcedc,destdc;grap
39、hics:tbitmap *bitmap=new graphics:tbitmap();rectwidth=rightpos-leftpos;rectheight=bottompos-toppos;sourcedc=createdc(display,null);destdc=createcompatibledc(sourcedc);bhandle=createcompatiblebitmap(sourcedc,rectwidth,rectheight);selectobject(destdc,bhandle);bitblt(destdc,0,0,rectwidth,rectheight,sou
40、rcedc,leftpos,toppos,srccopy);bitmap-handle=bhandle;bitmap-savetostream(bmpstream);bmpstream-position=0;leftsize=bmpstream-size;delete bitmap;deletedc(destdc);releasedc(bhandle,sourcedc);存為“clientunit1.cpp”和“clientclient.bpr”, 并編譯。 第二步,編制vserver.exe文件。新建c+builber工程,將窗體的name屬性設(shè)為“server”。加入tnmudp控件,na
41、me屬性設(shè)為“sudp”;localport屬性設(shè)為“2222”,讓控件sudp監(jiān)視主控機(jī)的2222端口,當(dāng)有數(shù)據(jù)發(fā)送到該口時(shí),觸發(fā)控件sudp的ondatareceived事件;remoteport屬性設(shè)為“1111”,當(dāng)控件sudp發(fā)送數(shù)據(jù)時(shí),將數(shù)據(jù)發(fā)到受控機(jī)的1111口。加入控件image1,align屬性設(shè)為“alclient”;加入控件button1,caption屬性設(shè)為“截屏”;加入控件label1,caption屬性設(shè)為“左:上:右:下”;加入控件edit1,text屬性設(shè)為“0:0:100:100”;加入控件label2,caption屬性設(shè)為“受控機(jī)ip地址”;加入控件ed
42、it2,text屬性設(shè)為“”; 在unit1.h中加入變量定義 void _fastcall tform1:formcreate(tobject *sender)tmpstream=new tmemorystream;rsltstream=new tmemorystream;為server的oncreate事件添加代碼: void _fastcall tform1:formdestroy(tobject *sender)delete tmpstream;delete rsltstream;為控件button1的onclick事件添加代碼: void _fastcall tform1:button1cl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合法有效裝修合同范例
- 廚房原材料合同范本
- 農(nóng)村住宅建房合同范本
- 衛(wèi)材購(gòu)銷合同范本
- 養(yǎng)殖設(shè)備包工合同范本
- 勞務(wù)合同范本100例
- 醫(yī)院后勤設(shè)備采購(gòu)合同范本
- 學(xué)校供餐服務(wù)合同范本
- 勞務(wù)兼職培訓(xùn)合同范本
- 公司裝修改造合同范本
- DeepSeek科普學(xué)習(xí)解讀
- 第一單元第2課《生活之美》課件-七年級(jí)美術(shù)下冊(cè)(人教版)
- 2025年七下道德與法治教材習(xí)題答案
- 危險(xiǎn)化學(xué)品目錄(2024版)
- 人教版八年級(jí)數(shù)學(xué)第二學(xué)期教學(xué)計(jì)劃+教學(xué)進(jìn)度表
- 國(guó)際部SOP手冊(cè)2014修改版(2.0版)
- 凈菜配送標(biāo)準(zhǔn)
- 水工環(huán)地質(zhì)調(diào)查技術(shù)標(biāo)準(zhǔn)手冊(cè)
- 基本力學(xué)性能-鋼筋混凝土原理_過鎮(zhèn)海
- 初中音樂-兒行千里母擔(dān)憂-課件PPT課件
- 壓縮空氣氣體管道吹掃、試壓方案
評(píng)論
0/150
提交評(píng)論