![【基于Java手機(jī)遠(yuǎn)程協(xié)助軟件的設(shè)計(論文)9900字】_第1頁](http://file4.renrendoc.com/view12/M07/0D/20/wKhkGWcmS3iAQEu5AAI1YtTyQ2c853.jpg)
![【基于Java手機(jī)遠(yuǎn)程協(xié)助軟件的設(shè)計(論文)9900字】_第2頁](http://file4.renrendoc.com/view12/M07/0D/20/wKhkGWcmS3iAQEu5AAI1YtTyQ2c8532.jpg)
![【基于Java手機(jī)遠(yuǎn)程協(xié)助軟件的設(shè)計(論文)9900字】_第3頁](http://file4.renrendoc.com/view12/M07/0D/20/wKhkGWcmS3iAQEu5AAI1YtTyQ2c8533.jpg)
![【基于Java手機(jī)遠(yuǎn)程協(xié)助軟件的設(shè)計(論文)9900字】_第4頁](http://file4.renrendoc.com/view12/M07/0D/20/wKhkGWcmS3iAQEu5AAI1YtTyQ2c8534.jpg)
![【基于Java手機(jī)遠(yuǎn)程協(xié)助軟件的設(shè)計(論文)9900字】_第5頁](http://file4.renrendoc.com/view12/M07/0D/20/wKhkGWcmS3iAQEu5AAI1YtTyQ2c8535.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于Java手機(jī)遠(yuǎn)程協(xié)助軟件的設(shè)計摘要:隨著現(xiàn)今社會計算機(jī)的廣泛普及以及網(wǎng)絡(luò)的快速發(fā)展給遠(yuǎn)程控制系統(tǒng)帶來了廣闊的用武之地,人們可以通過簡單的終端機(jī)完全的控制網(wǎng)絡(luò)另一端的被控機(jī),從而完成強(qiáng)大的控制功能。如今網(wǎng)絡(luò)技術(shù)飛速發(fā)展,網(wǎng)絡(luò)中主機(jī)使用的操作系統(tǒng)都存在有遠(yuǎn)程控制功能,遠(yuǎn)程控制給人們生活提供了極大的便利。但是在目前市場上大多是Windows與Windows端,Windows與Android端實現(xiàn)遠(yuǎn)程控制,而日常生活中大家都是手機(jī)不離手,缺乏Android與Android端軟件。因此日常生活中迫切需要一款能夠?qū)崿F(xiàn)Android與Android端的應(yīng)用軟件來為人們?nèi)粘I顜砀蟊憷?。實現(xiàn)Android與Android端遠(yuǎn)程控制,幫助長輩靈活使用智能手機(jī),同時也可以使用安卓手機(jī)控制異地另外一臺手機(jī),如開關(guān)鬧鐘,關(guān)閉正在使用的應(yīng)用等等,家長也可以使用遠(yuǎn)程控制幫助孩子們更加合理使用手機(jī),為人們?nèi)粘I顜砀啾憷?jié)約打開電腦所耗費(fèi)的時間空間。關(guān)鍵詞:Java;android;遠(yuǎn)程協(xié)助;客戶端;服務(wù)器目錄TOC\o"1-3"\f\t"樣式宋體小四行距:固定值20磅,1"\h7851緒論 1277271.1研究背景 1210291.2研究現(xiàn)狀 29912相關(guān)理論及技術(shù)背景 4115652.1Java語言 4320662.2安卓系統(tǒng) 5211742.1.2安卓應(yīng)用開發(fā) 7174562.2遠(yuǎn)程控制原理和技術(shù) 944702.2.1基于C/S結(jié)構(gòu)的遠(yuǎn)程控制技術(shù) 979272.2.2基于B/S架構(gòu)的遠(yuǎn)程控制技術(shù) 10182153系統(tǒng)分析與設(shè)計 1226693.1系統(tǒng)總體結(jié)構(gòu)設(shè)計 12172203.2系統(tǒng)邏輯流程 13118304系統(tǒng)實現(xiàn)方法與技術(shù) 1552934.1通信模塊實現(xiàn) 15297754.2系統(tǒng)屏幕畫面?zhèn)鬏數(shù)膶崿F(xiàn) 16167706總結(jié)與展望 2126125參考文獻(xiàn) 221緒論1.1研究背景安卓是一種基于Linux內(nèi)核(不包含GNU組件)的自由及開放源代碼的操作系統(tǒng)。主要使用于移動設(shè)備,如智能手機(jī)和平板電腦,由美國Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。Android操作系統(tǒng)最初由AndyRubin開發(fā),主要支持手機(jī)。2005年8月由Google收購注資。2007年11月,Google與84家硬件制造商、軟件開發(fā)商及電信營運(yùn)商組建開放手機(jī)聯(lián)盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開源許可證的授權(quán)方式,發(fā)布了Android的源代碼。第一部Android智能手機(jī)發(fā)布于2008年10月。Android逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上,如電視、數(shù)碼相機(jī)、游戲機(jī)、智能手表等。2011年第一季度,Android在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一。2013年的第四季度,Android平臺手機(jī)的全球市場份額已經(jīng)達(dá)到78.1%。2013年09月24日谷歌開發(fā)的操作系統(tǒng)Android在迎來了5歲生日,全世界采用這款系統(tǒng)的設(shè)備數(shù)量已經(jīng)達(dá)到10億臺。Android的系統(tǒng)架構(gòu)和其操作系統(tǒng)一樣,采用了分層的架構(gòu)。從架構(gòu)圖看,Android分為四個層,從高層到低層分別是應(yīng)用程序?qū)印?yīng)用程序框架層、系統(tǒng)運(yùn)行庫層和Linux內(nèi)核層。遠(yuǎn)程控制是指管理人員在異地通過計算機(jī)網(wǎng)絡(luò)異地?fù)芴柣螂p方都接入Internet等手段,連通需被控制的計算機(jī),將被控計算機(jī)的桌面環(huán)境顯示到自己的計算機(jī)上,通過本地計算機(jī)對遠(yuǎn)方計算機(jī)進(jìn)行配置、軟件安裝程序、修改等工作。遠(yuǎn)程控制通常通過網(wǎng)絡(luò)才能進(jìn)行。位于本地的計算機(jī)是操縱指令的發(fā)出端,稱為主控端或客戶端,非本地的被控計算機(jī)叫做被控端或服務(wù)器端。遠(yuǎn)"程"不等同于遠(yuǎn)"距離",主控端和被控端可以是位于同一局域網(wǎng)的同一房間中,也可以是連入Internet的處在任何位置的兩臺或多臺計算機(jī)。早期的遠(yuǎn)程控制往往指在局域網(wǎng)中的遠(yuǎn)程控制而言,隨著互聯(lián)網(wǎng)和技術(shù)革新,就如同坐在被控端電腦的屏幕前一樣,可以啟動被控端電腦的應(yīng)用程序,可以使用或竊取被控端電腦的文件資料,甚至可以利用被控端電腦的外部打印設(shè)備(打印機(jī))和通信設(shè)備(調(diào)制解調(diào)器或者專線等)來進(jìn)行打印和訪問外網(wǎng)和內(nèi)網(wǎng),就像利用遙控器遙控電視的音量、變換頻道或者開關(guān)電視機(jī)一樣。早期的遠(yuǎn)程控制大部分指的是電腦桌面控制,而后的遠(yuǎn)程控制可以使用手機(jī)、電腦控聯(lián)網(wǎng)的燈、窗簾、電視機(jī)、攝像機(jī)、投影機(jī)、指揮中心、大型會議室等。1.2研究現(xiàn)狀A(yù)ndroid平臺海量的用戶群體、開放的源碼及其豐富的應(yīng)用資源,使得國內(nèi)外對其開展了大量研究,主要集中在Android平臺的操作系統(tǒng)框架、應(yīng)用程序、內(nèi)核定制等方面。遠(yuǎn)程控制技術(shù)非常成熟。主流的遠(yuǎn)程控制方法有四種,第一種是基于C/S架構(gòu)的web遠(yuǎn)程控制方法。C/S架構(gòu)是一種典型的兩層架構(gòu),其全程是Client/Server,即客戶端服務(wù)器端架構(gòu),其客戶端包含一個或多個在用戶的電腦上運(yùn)行的程序,而服務(wù)器端有兩種,一種是數(shù)據(jù)庫服務(wù)器端,客戶端通過數(shù)據(jù)庫連接訪問服務(wù)器端的數(shù)據(jù);另一種是Socket服務(wù)器端,服務(wù)器端的程序通過Socket與客戶端的程序通信。C/S架構(gòu)也可以看做是客戶端架構(gòu)。因為客戶端需要實現(xiàn)絕大多數(shù)的業(yè)務(wù)邏輯和界面展示。這種架構(gòu)中,作為客戶端的部分需要承受很大的壓力,因為顯示邏輯和事務(wù)處理都包含在其中,通過與數(shù)據(jù)庫的交互(通常是SQL或存儲過程的實現(xiàn))來達(dá)到持久化數(shù)據(jù),以此滿足實際項目的需要。另一種是B/S架構(gòu)的Web遠(yuǎn)程控制方法,并用Java進(jìn)行了編程實現(xiàn)。B/S架構(gòu)的全稱為Browser/Server,即瀏覽器/服務(wù)器結(jié)構(gòu)。Browser指的是Web瀏覽器,極少數(shù)事務(wù)邏輯在前端實現(xiàn),但主要事務(wù)邏輯在服務(wù)器端實現(xiàn),Browser客戶端,WebApp服務(wù)器端和DB端構(gòu)成所謂的三層架構(gòu)。B/S架構(gòu)的系統(tǒng)無須特別安裝,只有Web瀏覽器即可。B/S架構(gòu)中,顯示邏輯交給了Web瀏覽器,事務(wù)處理邏輯在放在了WebApp上,這樣就避免了龐大的胖客戶端,減少了客戶端的壓力。因為客戶端包含的邏輯很少,因此也被成為瘦客戶端。第三種結(jié)合C/S架構(gòu)與B/S架構(gòu)的特點設(shè)計了一種基于GPRS和Internet網(wǎng)絡(luò)的遠(yuǎn)程分布式控制系統(tǒng)。最后一種是以單片機(jī)為微控制核心實現(xiàn)了IPv4和TD-SCDMA協(xié)議的通信,構(gòu)建了基于TD-SCDMA協(xié)議的遠(yuǎn)程控制方法。截至目前,我國市場上已經(jīng)有相關(guān)成果出現(xiàn),如向日葵,以及華為公司推出的“親情關(guān)懷”。親情關(guān)懷需要使用華為賬號登錄,可通過網(wǎng)絡(luò)撥打電話或者以發(fā)送短信的方式進(jìn)行實現(xiàn),遠(yuǎn)程協(xié)助的功能具體體現(xiàn)在“請求幫助”(請求對方遠(yuǎn)程控制你的手機(jī)),“提供幫助”(請求遠(yuǎn)程控制對方手機(jī))兩個核心選項上。另外重要的一點:親情關(guān)懷雖然可以安裝在市場上所有Android手機(jī)上,但是只有華為品牌的手機(jī)才可以使用此功能。2相關(guān)理論及技術(shù)背景2.1Java語言Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強(qiáng)大和簡單易用兩個特征。Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實現(xiàn)了面向?qū)ο罄碚摚试S程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程。Java具有簡單性、面向?qū)ο?、分布式、健壯性、安全性、平臺獨(dú)立與可移植性、多線程、動態(tài)性等特點。Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。Java工作原理由四方面組成:1.Java編程語言2.Java類文件格式3.Java虛擬機(jī)4.Java應(yīng)用程序接口
當(dāng)編輯并運(yùn)行一個Java程序時,需要同時涉及到這四種方面。使用文字編輯軟件或集成開發(fā)環(huán)境在Java源文件中定義不同的類,通過調(diào)用類中的方法來訪問資源系統(tǒng),把源文件編譯生成一種二進(jìn)制中間碼,存儲在class文件中,然后再通過運(yùn)行與操作系統(tǒng)平臺環(huán)境相對應(yīng)的Java虛擬機(jī)來運(yùn)行class文件,執(zhí)行編譯產(chǎn)生的字節(jié)碼,調(diào)用class文件中實現(xiàn)的方法來滿足程序的JavaAPI調(diào)用。如圖2-1所示。圖2-1Java工作原理2.2安卓系統(tǒng)
2.1.1安卓系統(tǒng)結(jié)構(gòu)Android操作系統(tǒng)框架,由頂?shù)降卓煞譃椋簯?yīng)用層、應(yīng)用框架層、系統(tǒng)運(yùn)行庫層、Linux內(nèi)核層四部分,如圖2-2所示。圖2-2Android操作系統(tǒng)框架安卓系統(tǒng)一些基本的系統(tǒng)功能如對系統(tǒng)文件的管理、對系統(tǒng)進(jìn)程的管理、對系統(tǒng)內(nèi)存的管理、用戶管理以及進(jìn)程間的通信等功能都是通過Linux內(nèi)核來完成的。智能手機(jī)現(xiàn)在大多有攝像頭、操控屏等硬件設(shè)備,Linux內(nèi)核層還為這些硬件提供了運(yùn)行所必須的各種驅(qū)動程序。這一層向上提供的接口是硬件抽象層(HAL),利用該規(guī)范各手機(jī)廠商可以根據(jù)自己的硬件特點制造出不同的硬件驅(qū)動程序,并依賴該接口對上一層進(jìn)行支持,這一過程就是所說的系統(tǒng)移植。安卓系統(tǒng)庫里存儲了大量的系統(tǒng)函數(shù)和組件存儲在系統(tǒng)運(yùn)行庫層,該層在系統(tǒng)運(yùn)行過程中可以被上一層所調(diào),如標(biāo)準(zhǔn)C庫Libc、瀏覽器引擎Webkit,安卓數(shù)據(jù)庫管理系統(tǒng)SQLite、圖像處理OpenGL等。安卓系統(tǒng)運(yùn)行的虛擬機(jī)稱作Dalvik虛擬機(jī),它非常類似于Java虛擬機(jī)JVM,但并不是真正的JVM。JVM的垃圾回收機(jī)制并不適用于移動設(shè)備,因為移動終端存在低能耗、低資源的瓶頸,而JVM在運(yùn)行速度、資源占用等方面難以滿足移動終端硬件的苛刻要求,因此,安卓系統(tǒng)將能夠達(dá)到以上性能要求的Dalvik虛擬機(jī)作為運(yùn)行虛擬機(jī)。應(yīng)用框架層這一層體現(xiàn)了安卓系統(tǒng)對移動設(shè)備應(yīng)用程序的理解。它隱藏了系統(tǒng)中進(jìn)程、內(nèi)存管理等概念;針對不同應(yīng)用需求抽象出活動(Activity)、服務(wù)((Service)、內(nèi)容提供者(Contentprovider)、廣播接收器(Broadcastreceiver)的概念組件;這些組件是構(gòu)成應(yīng)用程序的基本要素,一些基本的常用功能如手機(jī)的通話、資源的分配和管理、窗口切換、軟件的安裝與卸載、手機(jī)定位等功能的實現(xiàn)。這一層向上提供了Java形式的安卓應(yīng)用程序開發(fā)的框架與接口。應(yīng)用層是安卓操作系統(tǒng)框架的最高層,軟件開發(fā)者通過Java語言和下層框架接口,在安卓平臺開發(fā)各類特色應(yīng)用。2.1.2安卓應(yīng)用開發(fā)1.安卓應(yīng)用程序結(jié)構(gòu)安卓程序包括以下四部分:(1)Activity(2)BroadcastIntentReceiver(3)Server(4)ContentProviderActivity,一般代表手機(jī)屏幕的一屏,相當(dāng)于瀏覽器的一個頁面。在Activity中添加view,實現(xiàn)應(yīng)用界面和用戶交互。一個應(yīng)用程序一般由多個Activity構(gòu)成,這些Activity之間可互相跳轉(zhuǎn),可進(jìn)行頁面間的數(shù)據(jù)傳遞。每個Activity都有自己的生命周期。IntentReceiver,Intent是一次對將要執(zhí)行的操作的抽象描述。通過Intent,可實現(xiàn)Activity與Activity之間的跳轉(zhuǎn)。Intent最重要的組成部分是Intent的動作(Action)和動作對應(yīng)的數(shù)據(jù)(data)。與Intent相關(guān)的一個類叫IntentFilters。它用來描述Intent能夠用來處理哪些操作。BroadcastIntentReceiver,用于響應(yīng)外部事件。BroadcastReceiver不能生成UI,所以對用戶來說是不可見的。Service,運(yùn)行在后臺的應(yīng)用程序。ContentProvider:一個ContentProvider提供了一組標(biāo)準(zhǔn)的接口,從而能夠讓應(yīng)用程序保存或讀取ContentProvider的各種數(shù)據(jù)類型。一個應(yīng)用程序可通過它將自己的數(shù)據(jù)暴露出去。對于外界的應(yīng)用程序來說,它不需要關(guān)心這些數(shù)據(jù)的存儲方式,存儲地方,只需要通過ContentProvide提供的r接口訪問這些數(shù)據(jù)即可。當(dāng)然這涉及到數(shù)據(jù)訪問的權(quán)限問題。Android應(yīng)用程序主要使用Java語言開發(fā),Google為開發(fā)人員提供了AndroidSDK應(yīng)用程序開發(fā)工具包,同時還提供了AndroidNDKC/C++應(yīng)用程序開發(fā)工具以滿足開發(fā)人員的需要。在Android中應(yīng)用層與應(yīng)用框架層都屬于Java代碼層,而系統(tǒng)運(yùn)行庫以及內(nèi)核都是由C/C++實現(xiàn)的,Java層與C/C++通過JNI接口進(jìn)行交互,使得上層Java程序可以調(diào)用底層C/C++函數(shù)庫,如圖所示。有了AndroidNDK和JNI接口,用戶就可以使用C/C++語言進(jìn)行Android應(yīng)用程序的開發(fā)了。編寫好的Android應(yīng)用程序源碼經(jīng)過編譯后打包形成一個單獨(dú)的“.apk”文件。“.apk”文件是Android平臺上的應(yīng)用程序安裝文件,其中包含了應(yīng)用程序的二進(jìn)制代碼、資源文件、配置文件等。2.Android應(yīng)用程序開發(fā)環(huán)境Android應(yīng)用程序的開發(fā)目前普遍使用Eclipse+ADT+AndroidSDK的方式。Eclipse是一個基于Java的集成開發(fā)平臺,其附帶了一個標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具。ADT是在Eclipse中開發(fā)Android應(yīng)用程序的工具插件,為Android開發(fā)提供開發(fā)工具的升級或者變更。AndroidSDK是Google推出的Android軟件開發(fā)工具包,為開發(fā)者提供了庫文件以及其它開發(fā)所用到的工具。如圖2-3所示。圖2-3Android應(yīng)用程序結(jié)構(gòu)2.2遠(yuǎn)程控制原理和技術(shù)2.2.1基于C/S結(jié)構(gòu)的遠(yuǎn)程控制技術(shù)C/S結(jié)構(gòu),即客戶機(jī)和服務(wù)器結(jié)構(gòu)。它是軟件系統(tǒng)體系結(jié)構(gòu),通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配到Client端和Server端來實現(xiàn),降低了系統(tǒng)的通訊開銷。目前大多數(shù)應(yīng)用軟件系統(tǒng)都是Client/Server形式的兩層結(jié)構(gòu),由于現(xiàn)在的軟件應(yīng)用系統(tǒng)正在向分布式的Web應(yīng)用發(fā)展,Web和Client/Server應(yīng)用都可以進(jìn)行同樣的業(yè)務(wù)處理,應(yīng)用不同的模塊共享邏輯組件;因此,內(nèi)部的和外部的用戶都可以訪問新的和現(xiàn)有的應(yīng)用系統(tǒng),通過現(xiàn)有應(yīng)用系統(tǒng)中的邏輯可以擴(kuò)展出新的應(yīng)用系統(tǒng)。Client和Server常常分別處在相距很遠(yuǎn)的兩臺計算機(jī)上,Client程序的任務(wù)是將用戶的要求提交給Server程序,再將Server程序返回的結(jié)果以特定的形式顯示給用戶;Server程序的任務(wù)是接收客戶程序提出的服務(wù)請求,進(jìn)行相應(yīng)的處理,再將結(jié)果返回給客戶程序。這種模式如圖2-4所示。圖2-4C/S模式工作流程請求客戶端服務(wù)器請求客戶端服務(wù)器響應(yīng)響應(yīng)傳統(tǒng)的C/S體系結(jié)構(gòu)雖然采用的是開放模式,但這只是系統(tǒng)開發(fā)一級的開放性,在特定的應(yīng)用中無論是Client端還是Server端都還需要特定的軟件支持。C/S結(jié)構(gòu)的基本原則是將計算機(jī)應(yīng)用任務(wù)分解成多個子任務(wù),由多臺計算機(jī)分工完成,即采用“功能分布”原則。客戶端完成數(shù)據(jù)處理,數(shù)據(jù)表示以及用戶接口功能;服務(wù)器端完成DBMS的核心功能。這種客戶請求服務(wù)、服務(wù)器提供服務(wù)的處理方式是一種新型的計算機(jī)應(yīng)用模式。C/S結(jié)構(gòu)的優(yōu)點是能充分發(fā)揮客戶端PC的處理能力,很多工作可以在客戶端處理后再提交給服務(wù)器。對應(yīng)的優(yōu)點就是客戶端響應(yīng)速度快。具體表現(xiàn)在以下兩點:1.應(yīng)用服務(wù)器運(yùn)行數(shù)據(jù)負(fù)荷較輕。最簡單的C/S體系結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用由兩部分組成,即客戶應(yīng)用程序和數(shù)據(jù)庫服務(wù)器程序。二者可分別稱為前臺程序與后臺程序。運(yùn)行數(shù)據(jù)庫服務(wù)器程序的機(jī)器,也稱為應(yīng)用服務(wù)器。一旦服務(wù)器程序被啟動,就隨時等待響應(yīng)客戶程序發(fā)來的請求;客戶應(yīng)用程序運(yùn)行在用戶自己的電腦上,對應(yīng)于數(shù)據(jù)庫服務(wù)器,可稱為客戶電腦,當(dāng)需要對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行任何操作時,客戶程序就自動地尋找服務(wù)器程序,并向其發(fā)出請求,服務(wù)器程序根據(jù)預(yù)定的規(guī)則作出應(yīng)答,送回結(jié)果,應(yīng)用服務(wù)器運(yùn)行數(shù)據(jù)負(fù)荷較輕。2.數(shù)據(jù)的儲存管理功能較為透明。在數(shù)據(jù)庫應(yīng)用中,數(shù)據(jù)的儲存管理功能,是由服務(wù)器程序和客戶應(yīng)用程序分別獨(dú)立進(jìn)行的,并且通常把那些不同的(不管是已知還是未知的)前臺應(yīng)用所不能違反的規(guī)則,在服務(wù)器程序中集中實現(xiàn),例如訪問者的權(quán)限,編號可以重復(fù)、必須有客戶才能建立定單這樣的規(guī)則。所有這些,對于工作在前臺程序上的最終用戶,是“透明”的,他們無須過問(通常也無法干涉)背后的過程,就可以完成自己的一切工作。在客戶服務(wù)器架構(gòu)的應(yīng)用中,前臺程序不是非?!笆菪 保闊┑氖虑槎冀唤o了服務(wù)器和網(wǎng)絡(luò)。在C/S體系下,數(shù)據(jù)庫不能真正成為公共、專業(yè)化的倉庫,它受到獨(dú)立的專門管理。2.2.2基于B/S架構(gòu)的遠(yuǎn)程控制技術(shù)B/S架構(gòu)即瀏覽器和服務(wù)器架構(gòu)模式。它是隨著Internet技術(shù)的興起,對C/S架構(gòu)的一種變化或者改進(jìn)的架構(gòu)。在這種架構(gòu)下,用戶工作界面是通過WWW瀏覽器來實現(xiàn),極少部分事務(wù)邏輯在前端(Browser)實現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端(Server)實現(xiàn),形成所謂三層3-tier結(jié)構(gòu)。B/S架構(gòu)是WEB興起后的一種網(wǎng)絡(luò)架構(gòu)模式,WEB瀏覽器是客戶端最主要的應(yīng)用軟件。這種模式統(tǒng)一了客戶端,將系統(tǒng)功能實現(xiàn)的核心部分集中到服務(wù)器上,簡化了系統(tǒng)的開發(fā)、維護(hù)和使用。客戶機(jī)上只要安裝一個瀏覽器(Browser),如NetscapeNavigator或InternetExplorer,服務(wù)器安裝Oracle、Sybase、Informix或SQLServer等數(shù)據(jù)庫。瀏覽器通過WebServer同數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互。這樣就大大簡化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級的成本和工作量,降低了用戶的總體成本如圖2-5所示。圖2-5B/S技術(shù)工作流程B/S模型利用現(xiàn)在不斷成熟和普及的瀏覽器技術(shù)實現(xiàn)了原來需要復(fù)雜、專用軟件才能實現(xiàn)的強(qiáng)大功能,并大大節(jié)約了開發(fā)成本,是一種全新的軟件系統(tǒng)構(gòu)造技術(shù)。此外,在B/S架構(gòu)下,只要安裝有瀏覽器就可以隨時隨地的進(jìn)行遠(yuǎn)程控制,不再局限于專用的客戶端,極大的提高了遠(yuǎn)程控制工具的靈活性。但是,正是因為B/S的靈活性,導(dǎo)致了其對安全的控制能力與C/S相比較為薄弱。C/S通常面向較為固定的用戶,且必須安裝客戶端程序,才可以進(jìn)行遠(yuǎn)程控制,系統(tǒng)相對封閉,這就提高了其對安全的控制能力,因此對信息安全具有較高要求的遠(yuǎn)程控制工具一般采用C/S架構(gòu)。3系統(tǒng)分析與設(shè)計3.1系統(tǒng)總體結(jié)構(gòu)設(shè)計本系統(tǒng)設(shè)計的方案為C/S模式,在主控端設(shè)備上安裝服務(wù)器端程序,在被監(jiān)控端電腦上安裝客戶端程序。該系統(tǒng)的控制過程是先在主控端設(shè)備上執(zhí)行服務(wù)器程序,在命令收發(fā)過程中,主控端向被監(jiān)控端配置的UDP端口發(fā)送命令,該命令是一個控制命令,要求被監(jiān)控端來連接其開啟的TCP端口和要求被監(jiān)控端執(zhí)行的操作,如果被監(jiān)控端監(jiān)聽到該UDP命令,主動開啟TCP端口向主控端發(fā)送連接請求。這樣就建立了一個特殊的遠(yuǎn)程服務(wù),然后通過這個遠(yuǎn)程服務(wù),主控端使用各種遠(yuǎn)程控制功能發(fā)送遠(yuǎn)程控制命令,控制被監(jiān)控端電腦中的各種應(yīng)用程序運(yùn)行。如圖3-1所示。圖3-1終端設(shè)備結(jié)構(gòu)將軟件功能分解到通信的兩個端點上,即客戶端和服務(wù)器端,采用Client/Server模式。這樣能提高設(shè)計的靈活性,易于系統(tǒng)的擴(kuò)展。被監(jiān)控端接受主控端命令,并處理命令,然后輸出命令處理結(jié)果;主控端則提供交互界面及命令處理結(jié)果顯示;數(shù)據(jù)交換通道的建立由雙方的數(shù)據(jù)通信模塊負(fù)責(zé)。從而實現(xiàn)點到點的直接控制監(jiān)控,滿足實時性要求。主控端包括的模塊有:消息輸入,命令處理結(jié)果顯示模塊,通信模塊。消息輸入模塊負(fù)責(zé)將用戶界面的事件傳送到通信模塊,通信模塊將命令信息發(fā)送到被監(jiān)控端;被監(jiān)控端執(zhí)行操作后返回的成功或失敗信息交由主控端命令處理結(jié)果顯示模塊根據(jù)信息的格式進(jìn)行顯示。被監(jiān)控端包括的模塊有:通信模塊,命令處理模塊。被監(jiān)控端處于偵聽狀態(tài),一旦接收到合法的連接請求,就開UDP端口,并開啟命令接受線程,建立連接后,通過通信模塊接收主控端發(fā)來的命令信息,經(jīng)命令處理模塊解釋后,并將結(jié)果返回到主控端。3.2系統(tǒng)邏輯流程在被監(jiān)控端安裝客戶端程序,程序啟動的時候,嘗試開啟UDP端口,如果防火墻或者殺毒軟件阻止,嘗試開啟配置的其它UDP端口,如果都嘗試完畢,啟動失敗。否則,將開啟的UDP套接字傳入,然后開啟命令接收線程,目的是進(jìn)行命令獲取,并對獲取的命令進(jìn)行處理。然后將自己復(fù)制到自啟動項,并改名為Explorer.jar。在主控端安裝服務(wù)器程序,主控端首先啟動其控制窗口類,初始化圖形在主控端安裝服務(wù)器程序,主控端首先啟動其控制窗口類,初始化圖形顯示,然后用戶輸入被監(jiān)控端的IP地址。接著主控端開啟任意TCP端口,并向該IP配置的UDP端口發(fā)送初始化命令(命令格式為ordername:port),ordername為命令名字,port為主控端打開的TCP端口號。主控端對開啟的TCP端口進(jìn)行監(jiān)聽,如果超時,連接失敗。否則,主控端讀取被監(jiān)控端的狀態(tài)對象,接著啟動控制模塊和屏幕監(jiān)視模塊。被監(jiān)控端UDP端口啟動成功后,就開始對該UDP端口進(jìn)行監(jiān)聽,如果監(jiān)聽到有命令,就讀取它,并判斷命令是否有效,命令以ordername:port為格式,如果無效,返回繼續(xù)讀取命令,否則,調(diào)用相應(yīng)的命令處理模塊對命令進(jìn)行處理,命令處理完后將處理結(jié)果返回給主控端。主控端開啟任意TCP端口,向被監(jiān)控端的UDP端口發(fā)送“要求被監(jiān)控端連接”的UDP命令,命令形式為screen:TCPPort。如果命令超時,命令執(zhí)行失敗,否則,如果被監(jiān)視端來連接,生成Soket對象,從Soket中讀取被監(jiān)視端發(fā)送過來的圖形對象,并將圖象顯示在畫布上,每隔一定時間(若干秒),重新讀取圖象,更新畫布顯示,從而實現(xiàn)連續(xù)獲得對方屏幕變化。 被監(jiān)控端收到主控端的UDP命令:control:TCPPort,獲得主控端開放的TCP端口號。成功連接主控端的TCP端口后,并從中讀取事件對象,接著對事件對象進(jìn)行類型判斷并重演。接著判定控制套接是否關(guān)閉,如果關(guān)閉,控制結(jié)束。否則返回繼續(xù)讀取事件。4系統(tǒng)實現(xiàn)方法與技術(shù)4.1通信模塊實現(xiàn)1.Socket編程數(shù)據(jù)通信模塊中的數(shù)據(jù)通道建立采用Socket編程。Socket支持TCP/IP協(xié)議網(wǎng)絡(luò)通信的基本操作;它屏蔽了網(wǎng)絡(luò)底層的通信細(xì)節(jié),使編程簡單;它對通信端點進(jìn)行了抽象,提供發(fā)送和接收數(shù)據(jù)機(jī)制及打開、計算和關(guān)閉會話的能力。本項目中,客戶端和服務(wù)器代表運(yùn)行在Windows操作平臺下,采用JavaSocket來編程實現(xiàn)命令和數(shù)據(jù)信息的傳輸。2.通信建立服務(wù)器與客戶端開始都必須調(diào)用socket()函數(shù)產(chǎn)生一個Socket套接字。由于讓被監(jiān)控端開TCP端口,很容易被防火墻和殺毒軟件阻止,監(jiān)控就難以完成。這里,我們在主控端開TCP端口,等待被監(jiān)控端來主動連接,這樣監(jiān)控功能就能更順利的開始。主控端首先創(chuàng)建一個ServerSocket對象,然后調(diào)用ServerSocket的方法accept實現(xiàn)監(jiān)聽。如果被監(jiān)控端來訪問,accept會返回一個socket對象,利用這個對象就可以很輕松的完成服務(wù)器和客戶端的數(shù)據(jù)交換。只有被監(jiān)控端有請求時才建立連接,建立連接后,客戶端與服務(wù)器之間便可以雙向傳輸數(shù)據(jù)。當(dāng)?shù)玫絪ocket對象后,主控端建立ObjectInputStream對象,被監(jiān)控端建立ObjectOutputStream對象實現(xiàn)消息的接收和發(fā)送。完成通信后,調(diào)用ServerSocket和socket對象的close關(guān)閉套接字,結(jié)束通信。主控端主要通信代碼:ServerSocketserver=NewRadomSocket.openNewPort();//開啟新端口Socketsocket=null;server.setSoTimeout(Parameter.TCP_TIME_OUT);//設(shè)置超時socket=server.accept();//開啟ObjectInputStreamreadin=newObjectInputStream(socket.getInputStream());//封裝流,準(zhǔn)備讀取一個對象socket.close();//關(guān)閉socket,結(jié)束通信被監(jiān)控端主要通信代碼:Socketsocket=newSocket(serverip,serverport);ObjectOutputStreamsend=newObjectOutputStream(socket.getOutputStream());//封裝流send.writeObject(cc);//發(fā)送send.close();//關(guān)閉流socket.close();//關(guān)閉套接4.2系統(tǒng)屏幕畫面?zhèn)鬏數(shù)膶崿F(xiàn)在Java遠(yuǎn)程監(jiān)控過程中,我們要截取軟件運(yùn)行GUI界面,并將其保存到一個或一系列圖像文件中。目前,在Windows平臺下,有關(guān)屏幕截取的工具軟件有許多,比如:HyperCam等,當(dāng)然還可以直接利用Windows操作系統(tǒng)支持的屏幕拷貝PrintScreen鍵,將屏幕拷貝到剪貼板,在保存為圖像文件。這些工具軟件一定要屏幕截取者,在操作過程中要"精力集中"并且"伺機(jī)捕獲"所需要的軟件運(yùn)行界面。事實上,有時候我們需要Java應(yīng)用程序,自動對運(yùn)行的GUI界面進(jìn)行"拍照",比如:一臺計算機(jī)要獲取網(wǎng)絡(luò)上另一臺計算機(jī)正在運(yùn)行的GUI界面,要看看對方計算機(jī)上軟件運(yùn)行情況。這就需要在Java應(yīng)用程序中,自動將運(yùn)行的GUI界面保存到一個圖像文件中,然后通過網(wǎng)絡(luò)傳輸?shù)搅硪慌_計算機(jī)上。而上述HyperCam等工具軟件無法與我們的Java應(yīng)用融合為一體。因此,我們需要在Java應(yīng)用程序中編寫一個屏幕"照相機(jī)"。"屏幕的截取"是比較接近操作系統(tǒng)底層的操作,在Windows平臺下,該操作似乎成了VC、VB等語言開發(fā)的專利。事實上,"屏幕的截取"在Java應(yīng)用程序中,及其簡單。在JavaJDK1.5.0中提供了一個"機(jī)器人"Robot類。該類用于產(chǎn)生與本地操作系統(tǒng)有關(guān)的底層輸入、測試應(yīng)用程序運(yùn)行或自動控制應(yīng)用程序運(yùn)行。Robot類提供了一個方法:.createScreenCapture(..),可以直接將全屏幕或某個屏幕區(qū)域的像素拷貝到一個BufferedImage對象中,我們只需要將該對象寫入到一個圖像文件之中,就完成了屏幕到圖像的拷貝過程。為了構(gòu)造一個比較完善的Java屏幕"照相機(jī)",我們構(gòu)造了一個ImageProviderJavaBean,其源代碼和說明如下:/*該JavaBean可以直接在其他Java應(yīng)用程序中調(diào)用,實現(xiàn)屏幕的"拍照"*/publicclassImageProvider{privateRobotrobot=null;//圖象采集類privateRectanglerect=null;//要復(fù)制的屏幕區(qū)域/*構(gòu)造函數(shù),輸入要采集的屏幕的矩形信息*/publicImageProvider()throwsAWTException{rect=newRectangle(Toolkit.getDefaultToolkit().getScreenSize());//要復(fù)制的屏幕區(qū)域,這里為全屏robot=newRobot();//創(chuàng)建Robot對象}/*復(fù)制全屏幕,返回BufferedImage對象*/publicBufferedImageCopyScreen(){BufferedImageimage=robot.createScreenCapture(rect);//截取屏幕,生成BufferedImage對象returnimage;}}實現(xiàn)屏幕監(jiān)控要完成被監(jiān)控端發(fā)送屏幕截圖和主控端接收圖片的工作,該功能的實現(xiàn)中構(gòu)造了兩個類:SendImageThread和GetImageThread。SendImageThreadJavaBean代碼和說明如下:*被監(jiān)控端將Java屏幕"照相機(jī)"采集到的圖片壓縮為JPEG文件,發(fā)送到主控端*/publicclassSendImageThreadextendsThread{ publicvoidrun(){ inti=0; OutputStreamout=null; JPEGImageEncoderencoder=null;//壓縮為JPEG try{out=client.getOutputStream();//獲得TCP套接字流 encoder=JPEGCodec.createJPEGEncoder(out);//將流壓縮為JPEG對象流 }catch(IOExceptione1){ e1.printStackTrace(); }while(true){ image=impv.CopyScreen();//截取屏幕圖象 encoder.encode(image);//向網(wǎng)絡(luò)寫入JPEG圖形對象 }}GetImageThreadJavaBean代碼和說明如下:/*主控端接收J(rèn)PEG文件,并在畫布上顯示*/publicclassGetImageThreadextendsThread{publicvoidrun(){ BufferedImageimage=null;JPEGImageDecoderde=null;InputStreamin=null;try{socket.setReceiveBufferSize(1024);//設(shè)置接收緩沖socket.setSoTimeout(60000);//設(shè)置TCP過期時間in=socket.getInputStream();//獲取套接字輸入流de=JPEGCodec.createJPEGDecoder(in);//將輸入流封裝為JPEG對象流}catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace();}intwrongtime=0;while(true){ wrongtime++; if(wrongtime>=200)break;image=de.decodeAsBufferedImage();//對JPEG對象解碼,還原為BufferedIm
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新版通 用規(guī)范對設(shè)計影響交流分享
- 2025年撫順師范高等??茖W(xué)校高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- 山西省孝義市高三上學(xué)期入學(xué)摸底考試語文試題(含答案)
- 滬教版(上海)七年級地理第一學(xué)期中國區(qū)域篇(上)1.2《臺灣省》聽課評課記錄
- 中班幼兒系列活動策劃方案五篇
- 2025年科學(xué)儀器行業(yè)技術(shù)革新與發(fā)展前景
- 鋼材購銷合同范文年
- 代償協(xié)議與擔(dān)保合同
- 跨境貿(mào)易線上支付服務(wù)合同
- 投資公司借款的合同樣本
- 醫(yī)保政策與健康管理培訓(xùn)計劃
- 無人化農(nóng)場項目可行性研究報告
- 2024屆上海市金山區(qū)高三下學(xué)期二模英語試題(原卷版)
- 學(xué)生春節(jié)安全教育
- 2024年重慶市中考數(shù)學(xué)試卷(AB合卷)【附答案】
- DB43-T 2142-2021學(xué)校食堂建設(shè)與食品安全管理規(guī)范
- 宏觀利率篇:債券市場研究分析框架
- 六年級語文(上冊)選擇題集錦
- 《游戲界面設(shè)計專題實踐》課件-知識點5:圖標(biāo)繪制準(zhǔn)備與繪制步驟
- MOOC 材料科學(xué)基礎(chǔ)-西安交通大學(xué) 中國大學(xué)慕課答案
- 復(fù)產(chǎn)復(fù)工試題含答案
評論
0/150
提交評論