版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
緒論1.1研究背景安卓系統(tǒng)是由美國Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)組織和開發(fā)出來的,安卓系統(tǒng)基于Linux內(nèi)核(不包含GNU組件),且平臺是開源的,這就使得開發(fā)者可以進(jìn)入學(xué)習(xí)。大量移動設(shè)備都采用安卓系統(tǒng),安卓系統(tǒng)應(yīng)用范圍十分廣泛,例如大家日常生活經(jīng)常使用的智能手機(jī)、相機(jī)、平板、游戲機(jī),這些硬件設(shè)備都是使用Android系統(tǒng)。Android的系統(tǒng)架構(gòu)是以分層架構(gòu)實(shí)現(xiàn),與其他平臺上的操作系統(tǒng)相比,Android系統(tǒng)并沒有特殊的地方。Android也是四層結(jié)構(gòu)組成,自上而下對應(yīng)的是應(yīng)用程序?qū)印?yīng)用程序框架層、系統(tǒng)運(yùn)行庫層和Linux內(nèi)核層。遠(yuǎn)程控制是指管理人員通過計算機(jī)網(wǎng)絡(luò)或雙方接入網(wǎng)絡(luò),通過遠(yuǎn)程撥號的方式將被控制的電腦連接起來,將被控制電腦的桌面環(huán)境提示到自己的計算機(jī)上,并進(jìn)行配置,軟件安裝,通過本地電腦對遠(yuǎn)程電腦進(jìn)行修改和其他工作。遠(yuǎn)程控制需要網(wǎng)絡(luò)的支持。本地設(shè)備是主控制端或客戶端,主要工作是將控制命令的發(fā)送出去,接收方是被控制端或服務(wù)器端,是處于另一端網(wǎng)絡(luò)的設(shè)備。遠(yuǎn)"程"并不簡單指代遠(yuǎn)"距離",客戶端和服務(wù)器端可以處在同一局域網(wǎng)內(nèi),也可以是兩臺設(shè)備連接各自的網(wǎng)絡(luò)后處在不同網(wǎng)段的兩臺及以上的設(shè)備。最初的遠(yuǎn)程協(xié)助的意思是僅僅對處于局域網(wǎng)中設(shè)備實(shí)現(xiàn)的遠(yuǎn)程控制。近幾年互聯(lián)網(wǎng)和計算機(jī)技術(shù)更新?lián)Q代,遠(yuǎn)程協(xié)助功能日益強(qiáng)大,對于被控端設(shè)備,主控端連接成功后就可以啟動被控端設(shè)備的工具,甚至可以查看被控端設(shè)備中的文件資料。1.2研究現(xiàn)狀在Android平臺上,這里聚集了大量優(yōu)秀的程序員和科研工作者,同時平臺上的源代碼和學(xué)習(xí)資料都是向大眾開放,用戶可以注冊一個賬戶然后提取自己需要的資料,這一有利條件推動了國內(nèi)外眾多程序員對安卓系統(tǒng)應(yīng)用軟件上的深入開發(fā)研究,尤其是以安卓平臺為基礎(chǔ)的內(nèi)核特制、應(yīng)用軟件開發(fā)、系統(tǒng)框架設(shè)計這些方面。遠(yuǎn)程協(xié)助技術(shù)在現(xiàn)在已經(jīng)發(fā)展的較為完善了,目前的遠(yuǎn)程協(xié)助的實(shí)現(xiàn)主要有四種方法:一是基于C/S(client/server——客戶端/服務(wù)器架構(gòu))架構(gòu)的web遠(yuǎn)程協(xié)助。傳統(tǒng)的兩層架構(gòu)上,C/S架構(gòu)是鮮明代表,客戶端計算機(jī)上運(yùn)行的程序包括用戶電腦上運(yùn)行的一個或多個軟件,而服務(wù)器端有兩種,一種是數(shù)據(jù)庫服務(wù)器端,在客戶端訪問服務(wù)器端的數(shù)據(jù)之前,需要與數(shù)據(jù)庫先連接;另一種是Socket服務(wù)器端,服務(wù)器端的程序與客戶端兩者之間進(jìn)行程序上的會話溝通,需要編譯Socket實(shí)現(xiàn)兩臺設(shè)備在網(wǎng)絡(luò)下相互連接。C/S架構(gòu)是目前遠(yuǎn)程協(xié)助主要架構(gòu),客戶端在這種架構(gòu)中起重要作用,這就使得處在客戶端的那臺設(shè)備因?yàn)樘幚淼氖聞?wù)過多cpu負(fù)荷量過大,客戶端要實(shí)現(xiàn)業(yè)務(wù)邏輯、展示用戶界面、顯示邏輯、事務(wù)信息處理,并且要使得在做SQL這一模塊和實(shí)現(xiàn)存儲過程時能夠?qū)崿F(xiàn)數(shù)據(jù)交互,還需要訪問數(shù)據(jù)庫,只有通過這種連接才能使數(shù)據(jù)保持穩(wěn)定,滿足在現(xiàn)實(shí)生活中開發(fā)一個項(xiàng)目的需要。還有的方法是基于Java語言的B/S架構(gòu)的Web遠(yuǎn)程控制方法。B/S架構(gòu)的全稱:Browser/Server,即瀏覽器/服務(wù)器結(jié)構(gòu)。Browser指的是Web瀏覽器,web前端瀏覽器上不像C/S架構(gòu)的客戶端,它處理的事務(wù)很少,承受的壓力很小,相比之下,服務(wù)器端卻堆積了絕大多數(shù)的事務(wù)邏輯等待系統(tǒng)處理。Browser客戶端、WebApp服務(wù)器端、DB端組成三層架構(gòu)。B/S架構(gòu)的系統(tǒng)只要設(shè)備上裝有Web瀏覽器就可以實(shí)現(xiàn)需要的功能。B/S架構(gòu)中,各種架構(gòu)負(fù)責(zé)不同的系統(tǒng)運(yùn)行實(shí)現(xiàn),邏輯信息經(jīng)過系統(tǒng)處理通過web前端瀏覽器顯示,為了避免客戶端的邏輯事務(wù)堆積在同一處處理造成負(fù)荷壓力大的問題,這一部分由webapp處理。第三種實(shí)現(xiàn)方式是基于目前已有的C/S架構(gòu)和B/S架構(gòu)的基于GPRS和Internet網(wǎng)絡(luò)。這種方法充分利用兩者的顯著特點(diǎn),建成的是可以實(shí)現(xiàn)遠(yuǎn)程分布式控制系統(tǒng)。最后一種是以單片機(jī)為微控制核心實(shí)現(xiàn)了IPv4和TD-SCDMA協(xié)議的通信,構(gòu)建了基于TD-SCDMA協(xié)議的遠(yuǎn)程控制方法。截至目前,我國市場上已經(jīng)有相關(guān)成果出現(xiàn),如向日葵遠(yuǎn)程控制,teamview軟件以及華為公司推出的“親情關(guān)懷”,還有利用藍(lán)牙技術(shù)連接的近距離無線通信。親情關(guān)懷需要使用華為賬號登錄,可通過網(wǎng)絡(luò)撥打電話或者以發(fā)送短信的方式進(jìn)行實(shí)現(xiàn),遠(yuǎn)程協(xié)助的功能具體體現(xiàn)在“請求幫助”(請求對方遠(yuǎn)程控制你的手機(jī)),“提供幫助”(請求遠(yuǎn)程控制對方手機(jī))兩個核心選項(xiàng)上。另外重要的一點(diǎn):親情關(guān)懷雖然可以安裝在市場上所有Android手機(jī)上,但是這一工具只有華為品牌的手機(jī)才可以使用此功能。2相關(guān)理論及技術(shù)背景2.1Java語言Java語言發(fā)行時間較晚,它包含C++語言的所有優(yōu)點(diǎn),C++語言發(fā)行時間早,很多結(jié)構(gòu)負(fù)責(zé),令很多程序員在早期學(xué)習(xí)的時候常常對繼承、指針等地方費(fèi)解,針對這一情況,Java語言進(jìn)行適當(dāng)取舍,對c++語言中結(jié)構(gòu)復(fù)雜冗余的概念進(jìn)行優(yōu)化,因此Java語言對于初學(xué)者來說簡單易上手,強(qiáng)大的功能使得其在編程開發(fā)語言領(lǐng)域占據(jù)重要地位。Java語言是靜態(tài)面向?qū)ο蟮木幊陶Z言的典型,他能有效體現(xiàn)面向?qū)ο罄碚?,使程序員在進(jìn)行一些規(guī)模較大的開發(fā)編程中能夠有清晰的邏輯思維。Java語言沒有結(jié)構(gòu)不需要指針,數(shù)組和串是對象,能自動處理對象間的各種引用關(guān)系,從而實(shí)現(xiàn)對無用單位的采集工作,這樣,程序員無需對存儲管理的工作阻礙,能將更多的時間和精力放在產(chǎn)品研發(fā),大大提高工作效率。Java語言特點(diǎn):簡單性、面向?qū)ο蟆⒎植夹?、健壯性、安全性、平臺獨(dú)立與可移植性、多線程性、動態(tài)性、編譯和解釋性、高性能等。Java語言被特意設(shè)計成適應(yīng)于不斷變化的環(huán)境,其應(yīng)用范圍十分廣泛,可用于編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序、Android應(yīng)用等。Java語言運(yùn)行工作原理:1.Java編程語言2.Java類文件格式3.Java虛擬機(jī)4.Java應(yīng)用程序接口
圖2-1Java工作原理當(dāng)編輯并運(yùn)行Java程序時,需同時涉及這四方面。使用文字編輯軟件、Eclipse、Idea在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文件中實(shí)現(xiàn)的方法來滿足程序的JavaAPI調(diào)用。如圖2-2所示。圖2-2Java工作流程2.2Java編程環(huán)境Java開發(fā)包及Java開發(fā)工具是基于JDK(JAVADevelopmentKit),這個開發(fā)環(huán)境主要是用Java語言編寫的,可以用來做Applet小程序和其他軟件程序。JDK包含JRE(JavaRuntimeEnvironment)、Java工具以及一些核心類庫(JavaAPI)是Java語言的重點(diǎn)。每個Java應(yīng)用服務(wù)器實(shí)質(zhì)上都對應(yīng)某個JDK版本。另外,JRE是支持Java程序運(yùn)行的基本環(huán)境,而JavaAPI類庫中包含的JavaSEAPI子集和Java虛擬機(jī)統(tǒng)稱為JRE。JRE是Java運(yùn)行環(huán)境,JDK是Java的開發(fā)環(huán)境。所以在編寫運(yùn)行Java程序時必須搭載JDK,因此在電腦中安裝JDK即可正常編寫Java程序,也能正常運(yùn)行。而JDK包含了許多與Java運(yùn)行不相關(guān)的文件,內(nèi)存空間占用大,所以在運(yùn)行一般的Java程序只安裝JRE而不安裝JDK。2.3安卓系統(tǒng)
2.3.1安卓系統(tǒng)結(jié)構(gòu)Android操作系統(tǒng)框架自上而下分為:Android應(yīng)用層、Android應(yīng)用架構(gòu)層、Android系統(tǒng)運(yùn)行層、Linux內(nèi)核層,如圖2-2所示。圖2-3Android操作系統(tǒng)框架安卓系統(tǒng)大多由Linux內(nèi)核實(shí)現(xiàn)一些基本系統(tǒng)功能,如系統(tǒng)占據(jù)內(nèi)存、系統(tǒng)運(yùn)行進(jìn)程、系統(tǒng)文件和用戶的管理以及進(jìn)程間的通信等。智能手機(jī)現(xiàn)在大多有攝像頭、控制屏幕和其他硬件設(shè)備。Linux內(nèi)核層還為這些硬件提供了各種驅(qū)動程序。該層提供的接口是硬件抽象層(HAL)。基于這樣的規(guī)范下,手機(jī)廠商可以實(shí)現(xiàn)系統(tǒng)遷移,即根據(jù)本機(jī)器硬件特點(diǎn)做一個與之不同的硬件驅(qū)動程序,憑借此接口支持上層。安卓系統(tǒng)庫里在系統(tǒng)運(yùn)行時層存儲了大量的系統(tǒng)功能和組件,上層在系統(tǒng)運(yùn)行過程中可以調(diào)用這些功能和組件,安卓的系統(tǒng)運(yùn)行在一個名為“Dalvik虛擬機(jī)”的虛擬機(jī)上。應(yīng)用程序框架層主要表現(xiàn)在安卓系統(tǒng)對移動設(shè)備應(yīng)用程序。它將進(jìn)程和內(nèi)存管理的概念隱藏在系統(tǒng)中,并根據(jù)不同的應(yīng)用需求抽象出活動(Activity)、服務(wù)(Service)、內(nèi)容提供商(Contentprovider)和廣播意圖接收者(Broadcastreceiver)、廣播接收器(IntentReceiver)這些組件是應(yīng)用程序的基本元素,一些基本的通用功能如移動通話、資源分配與管理、窗口切換、軟件安裝與卸載、手機(jī)定位等。該層以Java的形式提供了安卓應(yīng)用程序開發(fā)的框架和接口。應(yīng)用層是安卓操作系統(tǒng)框架的頂層。軟件開發(fā)者通過Java語言和底層框架接口,在安卓平臺上開發(fā)各種特色應(yīng)用。圖2-4安卓系統(tǒng)架構(gòu)應(yīng)用2.1.2安卓應(yīng)用開發(fā)1.安卓應(yīng)用程序結(jié)構(gòu)安卓程序包括五方面:(1)活動(Activity)(2)廣播意圖接收者(BroadcastIntentReceiver)(3)服務(wù)(Server)(4)內(nèi)容供應(yīng)商(ContentProvider)(5)廣播接收器(IntentReceiver)活動(Activity):應(yīng)用程序表示層,類似瀏覽器的一個頁面或者是我們手機(jī)的一個屏幕展示。當(dāng)用戶要對我們的系統(tǒng)做出一些指令,實(shí)現(xiàn)用戶與計算機(jī)交流,如輸入互動信息,需要在Activity中添加view。應(yīng)用程序和Activity之間是一對多的關(guān)系,每個Activity活動時間都有時間限制,通過這些Activity之間的跳轉(zhuǎn)可以實(shí)現(xiàn)設(shè)備上各個頁面信息傳輸,呈現(xiàn)不同的網(wǎng)頁或者手機(jī)界面。廣播接收器(IntentReceiver):這一結(jié)構(gòu)能夠一次性對所有等待處理的對象執(zhí)行抽象描述。Intentreceiver與上層activity聯(lián)系,基于這一結(jié)構(gòu)activity和activity才能進(jìn)行跳轉(zhuǎn),用戶界面切換。(動作)action和(動作)action產(chǎn)生的數(shù)據(jù)信息(data)是IntentReceiver的基礎(chǔ)結(jié)構(gòu)。他包含的IntentFilters是用來描述Intent能夠用來處理哪些操作。廣播意圖接收者(BroadcastIntentReceiver):對外部事件做處理。BroadcastReceiver并不能產(chǎn)生一個有效的用戶界面,執(zhí)行這一操作時,用戶并不能看到具體流程。自動啟動應(yīng)用程序來響應(yīng)某個收到的Intent,這個特點(diǎn)讓BroadcastReceiver成為了事件驅(qū)動的應(yīng)用程序的最佳選擇。服務(wù)(Service):運(yùn)行在后臺的應(yīng)用程序。Service組件在運(yùn)行時沒有UI,它們可以更新數(shù)據(jù)源和Activity、觸發(fā)通知和廣播Intent。內(nèi)容供應(yīng)商(ContentProvider):每個ContentProvider都自動生成一組標(biāo)準(zhǔn)的接口通過這些接口實(shí)現(xiàn)應(yīng)用程序之間共享數(shù)據(jù),應(yīng)用程序保存或讀取ContentProvider的各種數(shù)據(jù)類型,將自己內(nèi)部信息分享到外界。對于網(wǎng)絡(luò)外其他的應(yīng)用程序來說,數(shù)據(jù)的存儲方式、存儲位置并不重要也無需訪問,訪問數(shù)據(jù)只需在ContentProvide生成的r接口中訪問。但這一操作涉及到權(quán)限問題,在實(shí)際數(shù)據(jù)訪問中需要提前獲取適當(dāng)?shù)淖x取權(quán)限。Android應(yīng)用程序開發(fā)基于Java語言,對于現(xiàn)在不斷更新變換的手機(jī)開發(fā)系統(tǒng),開發(fā)工具、環(huán)境、平臺對軟件研發(fā)者技術(shù)要求越來越高,Google公司提供海量技術(shù)支持:AndroidSDK應(yīng)用程序開發(fā)工具包、AndroidNDKC/C++應(yīng)用程序開發(fā)工具。Android應(yīng)用層和應(yīng)用框架層編譯語言都是基于Java語言,系統(tǒng)運(yùn)行庫和內(nèi)核這兩層是用C/C++語言進(jìn)行編譯,這四層框架交互連接是通過JNI接口建立,具體的實(shí)現(xiàn)方法是:處于上層的Android應(yīng)用層和應(yīng)用框架層通過Java語言程序通過調(diào)用底層系統(tǒng)運(yùn)行庫和Linux內(nèi)核層的函數(shù)庫實(shí)現(xiàn)Android應(yīng)用程序開發(fā)。用戶可通過AndroidNDK和JNI接口使用C/C++語言進(jìn)行Android應(yīng)用程序的開發(fā)。開發(fā)者在編譯完成一段Android應(yīng)用程序源碼后打包形成獨(dú)立的“.apk”文件。這個文件非常重要,包含應(yīng)用程序二進(jìn)制代碼、配置文件、資源文件等,當(dāng)用戶要通過Android平臺安裝應(yīng)用程序,“.apk”文件是基礎(chǔ)配置。編寫的程序沒有這一文件,無法生成。2.Android應(yīng)用程序開發(fā)環(huán)境Eclipse+ADT+AndroidSDK的開發(fā)配置在開發(fā)圈上是當(dāng)前主流的開發(fā)工具以及配套組件。Eclipse是開源的,最初主要用Java語言,它核心小,所有功能都以插件的形式附加于Eclipse核心之上,但目前已經(jīng)有經(jīng)驗(yàn)豐富的開發(fā)者利用插件在這一平臺使用其他計算機(jī)語言如python和C++。ADT也是其中用來做Android軟件開發(fā)的工具包,這個工具插件運(yùn)用于Eclipse中開發(fā)Android應(yīng)用程序,Google推出AndroidSDK工具為Android開發(fā)提供開發(fā)工具的升級或者變更,向開發(fā)者提供了必要的庫文件以及其它開發(fā)中需具備的工具。如圖2-3所示。圖2-5Android應(yīng)用程序結(jié)構(gòu)2.2遠(yuǎn)程協(xié)助原理和技術(shù)2.2.1基于C/S結(jié)構(gòu)的遠(yuǎn)程協(xié)助技術(shù)C/S結(jié)構(gòu)指客戶機(jī)和服務(wù)器結(jié)構(gòu),屬于軟件系統(tǒng)構(gòu)架,這一結(jié)構(gòu)在客戶端和服務(wù)器端都需要進(jìn)行邏輯處理,因此設(shè)備對硬件要求高,后臺將系統(tǒng)進(jìn)程按具體需求合理分配到客戶端和服務(wù)器端,大大降低系統(tǒng)花費(fèi)在通訊上的成本。目前市場上應(yīng)用軟件系統(tǒng)基本上是C/S結(jié)構(gòu),客戶機(jī),服務(wù)器應(yīng)用程序能進(jìn)行相同的業(yè)務(wù)處理,即使應(yīng)用模塊有差異,也可以共享邏輯組件,這就使得系統(tǒng)內(nèi)部和外部用戶都能訪問進(jìn)入刷新的應(yīng)用系統(tǒng),將現(xiàn)有應(yīng)用系統(tǒng)中的邏輯進(jìn)行擴(kuò)展。C/S工作模式常用于兩臺距離較遠(yuǎn)的設(shè)備上,客戶端程序的主要工作是產(chǎn)生數(shù)據(jù),存放在客戶端軟件內(nèi)存中,再通過接口調(diào)用產(chǎn)生的數(shù)據(jù)發(fā)送到客戶端操作系統(tǒng),客戶端操作系統(tǒng)收到數(shù)據(jù)再利用指定的協(xié)議發(fā)送數(shù)據(jù)。通過網(wǎng)絡(luò)傳輸至服務(wù)器端;Server程序的工作是在接收客戶程序提出的服務(wù)請求后,進(jìn)行相應(yīng)的處理,再將結(jié)果返回給客戶程序。這種模式如圖2-4所示。圖2-6C/S模式工作流程請求客戶端服務(wù)器請求客戶端服務(wù)器響應(yīng)響應(yīng)早期C/S體系結(jié)構(gòu)由于其結(jié)構(gòu)的不完整性,在某些特殊條件下在Client端和Server端都依靠特定的條件支撐才能實(shí)現(xiàn)。C/S結(jié)構(gòu)的基本原則是“功能分布”原則。將計算機(jī)進(jìn)程中的任務(wù)劃分成若干個不同的子任務(wù),分配至其他的計算機(jī)上分工完成??蛻舳酥饕蝿?wù)是對數(shù)據(jù)進(jìn)行處理,數(shù)據(jù)表示和用戶接口功能;服務(wù)器端主要任務(wù)是運(yùn)行DBMS,對數(shù)據(jù)庫進(jìn)行查詢管理,顯示用戶操作界面。C/S結(jié)構(gòu)的最大優(yōu)點(diǎn)是交互性強(qiáng),客戶端設(shè)備處理功能強(qiáng)大,大量任務(wù)都先在客戶端設(shè)備處理結(jié)束后再次提交到服務(wù)器。這一流程極大的好處就是客戶端處理問題效率高。具體表現(xiàn)在以下兩點(diǎn):1.方便處理大量數(shù)據(jù),響應(yīng)速度快。C/S體系結(jié)構(gòu)的數(shù)據(jù)庫分為兩部分:客戶應(yīng)用程序、數(shù)據(jù)庫服務(wù)器程序。在數(shù)據(jù)庫服務(wù)器程序運(yùn)行的設(shè)備,也稱為應(yīng)用服務(wù)器。當(dāng)服務(wù)器端程序啟動后,就保持等待狀態(tài)直到另一端程序發(fā)送連接請求。與之對應(yīng)的稱為客戶電腦,客戶應(yīng)用程序在用戶自己的電腦上運(yùn)行時,客戶應(yīng)用程序開始自動尋找服務(wù)器程序前需要對數(shù)據(jù)庫中的數(shù)據(jù)檢索,找到相應(yīng)的服務(wù)器端數(shù)據(jù)信息,向服務(wù)器發(fā)出連接請求,另一端服務(wù)器程序根據(jù)系統(tǒng)設(shè)定以及工作人員操作作相應(yīng)指示,返回結(jié)果。2.對數(shù)據(jù)儲存管理公開透明。數(shù)據(jù)庫應(yīng)用中,服務(wù)器程序和客戶應(yīng)用程序各自對數(shù)據(jù)儲存管理進(jìn)行自己的操作,不同的前臺應(yīng)用不能違反的網(wǎng)絡(luò)協(xié)議規(guī)定,在服務(wù)器程序中集中實(shí)現(xiàn)。所有對于工作在前臺程序上的最終用戶都可以看到工作流程以及內(nèi)部信息,對于后臺運(yùn)行的程序兩者并不影響,只需要運(yùn)行他們分配到的系統(tǒng)任務(wù)。在客戶服務(wù)器架構(gòu)的應(yīng)用中,絕大多數(shù)工作量由服務(wù)器和網(wǎng)絡(luò)完成,前臺程序也需要一定的規(guī)模。在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ù)的大力發(fā)展,web興起,基于C/S架構(gòu)進(jìn)行變化和改進(jìn)形成的新的架構(gòu)稱為B/S架構(gòu)。用戶在這種架構(gòu)下的工作界面是基本上通過萬維網(wǎng)瀏覽器實(shí)現(xiàn),是客戶端最主要的應(yīng)用軟件,主要事務(wù)邏輯在服務(wù)器端(Server)實(shí)現(xiàn),只有相當(dāng)少量的事務(wù)邏輯在前端(Browser)實(shí)現(xiàn),形成三層3-tier結(jié)構(gòu)。C/S架構(gòu)將系統(tǒng)開發(fā)、維護(hù)和利用流程簡明化,它將系統(tǒng)功能實(shí)現(xiàn)的中樞部分發(fā)送到服務(wù)器上完成,而客戶機(jī)上只要安裝一個瀏覽器(Browser)通過WebServer同數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交流。這種操作模式分布性強(qiáng),直接放在局域網(wǎng)上,為客戶端設(shè)備減壓,客戶端零維護(hù),業(yè)務(wù)擴(kuò)展便利,開發(fā)簡單,共享性強(qiáng)。如圖2-5所示。圖2-7B/S技術(shù)工作流程B/S模型是近幾年正在興起的軟件系統(tǒng)構(gòu)造技術(shù),在瀏覽器技術(shù)的不斷發(fā)展和完善下實(shí)現(xiàn)不依賴繁瑣、特定的軟件也能實(shí)現(xiàn)的開發(fā)功能,提高運(yùn)行效率,降低開發(fā)成本。在B/S架構(gòu)支持下,遠(yuǎn)程協(xié)助變得更加易于操作,不再是只能使用專用客戶端就能實(shí)現(xiàn),只要帶有瀏覽器就可以隨時隨地的進(jìn)行遠(yuǎn)程協(xié)助,遠(yuǎn)程控制工具的機(jī)動性有效加強(qiáng)。凡事都有利亦有弊,B/S的靈活性,使得其安全保障上有一些欠缺,比C/S架構(gòu)較薄弱。C/S架構(gòu)系統(tǒng)具有一定封閉性,適用性窄,用戶群固定,只有兩層傳輸,而不是中間有多層架構(gòu),界面和操作豐富,客戶端操作可以隨意排列,滿足客戶需要,此外客戶端程序需要安裝才可以使用,安全性得到保障,因此,在實(shí)際的遠(yuǎn)程協(xié)助開發(fā)中,為了加強(qiáng)信息安全性,遠(yuǎn)程控制工具一般采用C/S架構(gòu)實(shí)現(xiàn)。3系統(tǒng)分析與設(shè)計3.1系統(tǒng)總體結(jié)構(gòu)設(shè)計本設(shè)計是用C/S架構(gòu)實(shí)現(xiàn),實(shí)現(xiàn)主要方式為:在服務(wù)器端和客戶端設(shè)備上安裝另一端設(shè)備上的程序。這一操作流程是先開啟主控端設(shè)備,然后對被控端設(shè)備上執(zhí)行一些命令,使被控端程序收到訪問請求,在命令從主控端發(fā)出和被控端接收這一流程中,主控端會發(fā)送對應(yīng)的控制命令到被監(jiān)控端配置的UDP端口,被監(jiān)控端接收到控制命令后,主動開啟自己的TCP端口去對主控端開啟的TCP端口發(fā)送連接請求,且對被控端發(fā)送的對應(yīng)訪問請求做出相應(yīng)的操作?;谶@樣的操作流程下實(shí)現(xiàn)一個簡單的遠(yuǎn)程協(xié)助功能。在這個遠(yuǎn)程協(xié)助服務(wù)中,主控端使用各種遠(yuǎn)程控制功能向被控端發(fā)送遠(yuǎn)程協(xié)助命令,能夠?qū)Ρ槐O(jiān)控端設(shè)備中的各種應(yīng)用程序執(zhí)行相應(yīng)的基本操作。如圖3-1所示。圖3-1終端設(shè)備結(jié)構(gòu)采用c/s模式,客戶端和服務(wù)器端兩者各自分配到相應(yīng)軟件功能。在應(yīng)用程序開發(fā)中,這種結(jié)構(gòu)因?yàn)榻Y(jié)構(gòu)簡單(只有兩層)應(yīng)用與服務(wù)兩者分離,系統(tǒng)具有極強(qiáng)的靈活性和穩(wěn)定性。被控端對主控端發(fā)送的命令進(jìn)行處理,并反饋命令處理結(jié)果;主控端負(fù)責(zé)顯示處理結(jié)果,包括用戶登錄界面和顯示被控端命令處理發(fā)送來的結(jié)果;在這一操作流程下,兩者之間的數(shù)據(jù)進(jìn)行交換,兩者數(shù)據(jù)通信模塊共同建立起交換通道。通過點(diǎn)到點(diǎn)的直接控制監(jiān)控,可在線實(shí)現(xiàn)遠(yuǎn)程協(xié)助。主控端包含模塊:輸入信息模塊,顯示命令處理結(jié)果模塊,通信模塊。輸入信息模塊主要任務(wù)是將用戶界面的事件傳送到通信模塊,通信模塊將命令信息發(fā)送到被監(jiān)控端;被監(jiān)控端執(zhí)行操作后返回的成功或失敗信息交由主控端命令處理結(jié)果顯示模塊根據(jù)信息的格式進(jìn)行顯示。被控端包含模塊:通信模塊,命令處理模塊。被控端在監(jiān)聽狀態(tài)下接收到合法的連接請求,就會進(jìn)行命令接受,自動打開UDP端口,連接建立成功后,通信模塊對接收到的主控端發(fā)來的命令信息,命令處理模塊對命令信息分析處理做出響應(yīng),并將結(jié)果反饋到主控端。3.2系統(tǒng)邏輯流程在被控端上安裝客戶端程序時,安裝的客戶端程序會自行啟動,并開啟UDP端口,如果防火墻、電腦管家以及其他殺毒工具阻止這一進(jìn)程,就嘗試開啟配置其它UDP端口重復(fù)進(jìn)行之前的操作,如果反復(fù)采用這些方法后依舊顯示啟動失敗??梢試L試將開啟的UDP套接字傳入,然后開啟命令接收線程,將自己添加到自啟動項(xiàng),并改名為Explorer.jar。這一方法可以進(jìn)行命令獲取,并處理獲取命令。安裝服務(wù)器程序在主控端時,主控端先啟動控制窗口類,這時主控端安裝在服務(wù)器端的程序會出現(xiàn)一個啟動的頁面,用戶在這個登陸頁面窗口處輸入被監(jiān)控端的IP地址。主控端開啟一個TCP端口發(fā)送一條初始化命令(命令格式:ordername:port;ordername:命令名;port:主控端打開的TCP端口號)到被監(jiān)控端的IP地址配置的UDP端口。開啟TCP端口后主控端進(jìn)入監(jiān)聽狀態(tài),如果連接超時則連接失敗,需要重新連接。當(dāng)連接成功時,主控端程序開始讀取被監(jiān)控端的信息并自動捕捉被監(jiān)控端的畫面信息,主控端可以對被控端上的應(yīng)用程序進(jìn)行屏幕監(jiān)視和執(zhí)行一些簡單的控制操作。當(dāng)被監(jiān)控端UDP端口成功啟動,主控端設(shè)備啟動對該端口的偵聽工作,一旦收到UDP端口發(fā)送來的命令文件,主控端就立刻對命令文件及時抓取分析判斷發(fā)送來的命令文件是否對主控端有實(shí)際的控制作用(命令格式:ordername:port)如果這段命令對主控端沒有任何作用,就返回空指令且繼續(xù)回到監(jiān)聽狀態(tài)在偵聽到命令是抓取分析重復(fù)之前的流程。若截取來的命令執(zhí)行后對主控端有影響,系統(tǒng)就會從主控端中調(diào)取對應(yīng)的命令處理模塊,在這段命令操作執(zhí)行后將處理結(jié)果反饋至主控端。主控端收到命令處理結(jié)果后打開一個TCP端口,向被監(jiān)控端的UDP端口發(fā)送一條“被控端處理連接信息”的UDP命令(命令格式:screen:TCPPort)。如果該命令長時間沒有得到被控端回應(yīng),則連接失敗,自動斷開,彈出連接失敗的消息,返回初始登陸界面。得到回應(yīng)后,被監(jiān)視端發(fā)送連接申請,生成Soket對象,且socket對象中有被監(jiān)視端提交的圖像信息,讀取圖像信息后被控端的畫面信息會出現(xiàn)在主控端的屏幕上,在一定的時間周期內(nèi)(以秒為單位),再次訪問被控端屏幕讀取,更新圖像信息,以達(dá)到被監(jiān)控端屏幕被持續(xù)接收。 主控端向被控端發(fā)送UDP命令(格式:control:TCPPort),這一命令主要的功能是獲取主控端開啟的TCP端口號。被控端輸入獲取到的主控端開啟的TCP端口后,兩臺終端設(shè)備連接成功,被控端可讀取主控端事件對象信息,并進(jìn)行類型判斷、重演。連接成功兩臺設(shè)備會執(zhí)行一系列操作,被控端還需要判斷主控端開啟的TCP端口是否正常開放,如果端口關(guān)閉,主控端和被控端兩臺設(shè)備斷開連接,遠(yuǎn)程協(xié)助結(jié)束。所以在兩臺設(shè)備遠(yuǎn)程協(xié)助時,需要保證TCP端口在通信中始終是正常開啟狀態(tài),兩臺設(shè)備連接時,主控端仍能對被控端執(zhí)行控制命令,被控端依舊可以讀取主控端事件信息。4系統(tǒng)實(shí)現(xiàn)方法與技術(shù)4.1通信模塊實(shí)現(xiàn)1.Socket編程數(shù)據(jù)通信模塊內(nèi)的數(shù)據(jù)通道是由socket編程編譯的。Socket編程相對輕松便捷,將網(wǎng)絡(luò)中底層的通信細(xì)節(jié)屏蔽;socket(套接字)是應(yīng)用層和TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口,計算機(jī)之間進(jìn)行通信的一種約定或一種方式實(shí)現(xiàn),通過socket這種約定,一臺計算機(jī)可以接受其他計算機(jī)發(fā)送來的數(shù)據(jù),也可以發(fā)送數(shù)據(jù)給其他計算機(jī)。在發(fā)送和接收數(shù)據(jù)機(jī)制時,socket可以為兩端設(shè)備提供打開、計算和關(guān)閉會話的功能。Socket主要支持TCP/IP協(xié)議網(wǎng)絡(luò)通信的基本操作,在本項(xiàng)目中,主要采用C/S架構(gòu),client端和server端運(yùn)行Windows操作平臺下,client和server兩端之間所有需要執(zhí)行操作的命令和需要傳輸?shù)臄?shù)據(jù)信息都可以使用JavaSocket編程實(shí)現(xiàn)。2.通信建立socket()函數(shù)用來創(chuàng)建一個Socket套接字。兩臺計算機(jī)之間的通信相當(dāng)于兩個套接字通信,因此無論是服務(wù)器端還是客戶端這兩端都需要調(diào)用一個獨(dú)立的套接字,且調(diào)用的套接字是不同的。前期的論述中提到在主控端開啟一個TCP端口,被監(jiān)控端檢測到開啟一個被控端IP地址對應(yīng)的UDP端口與主控端TCP端口主動連接,為什么不能在被控端執(zhí)行這一操作呢,因?yàn)樵诒豢囟酥苯娱_啟一個TCP端口具有一定的安全隱患,一旦系統(tǒng)檢測到被控端TCP端口被打開,防火墻和系統(tǒng)安裝的殺毒軟件就會強(qiáng)行終止后續(xù)行為,這一控制將無法實(shí)現(xiàn)。讓主控端去和被控端連接這樣的監(jiān)控功能安全隱患小,不受太多權(quán)限阻止,確保兩臺設(shè)備的交流可以成功實(shí)現(xiàn),提高運(yùn)行效率。主控端設(shè)備需要創(chuàng)建一個ServerSocket對象,ServerSocket的方法在調(diào)用時accept開啟監(jiān)聽功能。當(dāng)訪問的是被監(jiān)控端,返回socket對象,服務(wù)器端和客戶端進(jìn)行數(shù)據(jù)交換。此外,連接必須要在被控端的同意下進(jìn)行,連接后,客戶端與服務(wù)器兩端設(shè)備可以相互發(fā)送數(shù)據(jù)信息到對方的設(shè)備上。返回socket對象后,主控端成功建立Readobj對象,在被監(jiān)控端上實(shí)現(xiàn)消息的接收和發(fā)送,即Readobj對象建立成功。兩者完成遠(yuǎn)程協(xié)助后,調(diào)用ServerSocket和socket對象中的close關(guān)閉套接字,通信斷開。圖3-1socket通信原理主控端主要通信代碼:publicclassClientextendsThread{ privatestaticSocketsocket=null; privatestaticRobotrobot=null; publicstaticvoidmain(String[]args){ booleanisConn=false; Clientclient=newClient(); do{ isConn=client.doStart(); }while(isConn==false); client.start(); if(socket!=null){ ReadObjreadObj=newReadObj(socket,robot); readObj.start(); } }被監(jiān)控端主要通信代碼:serverSocket=newServerSocket(serverPort); }catch(IOExceptione){ e.printStackTrace();4.2系統(tǒng)屏幕畫面?zhèn)鬏數(shù)膶?shí)現(xiàn)在遠(yuǎn)程協(xié)助過程中主控端設(shè)備需要獲取被控端設(shè)備GUI(圖形界面)界面,在遠(yuǎn)程協(xié)助中,我們在獲得屏幕畫面時需要不停截取有效畫面,將這些截取獲得的有效畫面集中收錄到一個大的圖像文件夾中。目前,各大平臺下,截取屏幕的軟件方式和工具并不少見,比如各大手機(jī)商都有自帶的截屏錄屏工具、HyperCam、Windows操作系統(tǒng)下截屏通過PrintScreen鍵,將屏幕截取至剪貼板可直接保存為jpg格式的圖片。但這些工具軟件在運(yùn)行過程中,工作人員需要集中精力,等候直到預(yù)期圖片出現(xiàn)進(jìn)行抓取,這耗費(fèi)人力且過程繁瑣。所以,在我們在對Java應(yīng)用程序進(jìn)行操作時,主控端設(shè)備想要獲取正在運(yùn)行的被控端的頁面信息,需要確認(rèn)被控端設(shè)備上應(yīng)用程序和各種工具是否在正常運(yùn)行。在我們研究的這個Java應(yīng)用程序中,需要設(shè)計一個功能可以自行截取有效界面,將被控端設(shè)備GUI界面保存到一個集中圖像文件夾中,然后通過網(wǎng)絡(luò)將所有的圖像信息發(fā)送到主控端設(shè)備上。在本段開頭提到的市面上已經(jīng)流行的各大操作系統(tǒng)自帶的截圖工具和市面上常規(guī)的軟件與我們研究的Java應(yīng)用不能有效結(jié)合。所以我們在對這項(xiàng)應(yīng)用程序設(shè)計中需要添加一個可以自行抓取屏幕并保存抓取屏幕圖像的功能?!敖貓D”這一功能不難實(shí)現(xiàn),是直接運(yùn)行在“裸機(jī)上”最基本的系統(tǒng)軟件。其實(shí),截圖這一功能在Java應(yīng)用程序中并不難實(shí)現(xiàn)。在JavaJDK1.5.0中提供了一個Robot類。該類用于產(chǎn)生與本地操作系統(tǒng)有關(guān)的底層輸入、測試應(yīng)用程序運(yùn)行或自動控制應(yīng)用程序運(yùn)行。構(gòu)造PicturePanelJavabean類設(shè)計出用來抓取屏幕界面的相機(jī)publicPicturePanel(UserGUIgui){ this.gui=gui;//抓取全屏 Object[]items={"Backcamera","Frontcamera"}; /*定義主控端被控端抓取屏幕*/ splitPane=newJSplitPane();//更新圖像信息 splitPane.setResizeWeight(1.0); GroupLayoutgroupLayout=newGroupLayout(this); groupLayout.setHorizontalGroup( groupLayout.createParallelGroup(Alignment.TRAILING) .addGroup(groupLayout.createSequentialGroup() .addContainerGap() .addComponent(splitPane,GroupLayout.DEFAULT_SIZE,501,Short.MAX_VALUE) .addContainerGap()) ); groupLayout.setVerticalGroup( groupLayout.createParallelGroup(Alignment.TRAILING) .addGroup(Alignment.LEADING,groupLayout.createSequentialGroup() .addContainerGap() .addComponent(splitPane,GroupLayout.DEFAULT_SIZE,400,Short.MAX_VALUE) .addContainerGap()) ); panel=newJPanel(); splitPane.setLeftComponent(panel); panel.setBorder(newEtchedBorder(EtchedBorder.LOWERED,null,null)); imgLabel=newJLabel(); panel.add(imgLabel); panel_1=newJPanel(); splitPane.setRightComponent(panel_1); list=newJList(); list.addMouseListener(newMouseAdapter(){被監(jiān)控端向主控端發(fā)送命令傳輸數(shù)據(jù),該功能的實(shí)現(xiàn)中構(gòu)造了類:commandFileSendercommandFileSenderJavaBean代碼和說明如下:publicvoidcommandFileSender(Stringimei,shortcommand,byte[]args,Stringdir,Stringname){ intchannel=channelHandlerMap.get(imei).getFreeChannel(); if(!channelHandlerMap.get(imei).registerListener(channel,newFilePacket())) gui.logErrTxt("ERROR:channel"+channel+"isalreadyinuse!"); channelHandlerMap.get(imei).registerHandler(channel,newFileHandler(channel,imei,gui,dir,name)); //gui.saveFileChannel(imei,channel); byte[]nullArgs=newbyte[0]; if(args==null)args=nullArgs; clientMap.get(imei).toMux(command,channel,args); }主控端與被控端連接成功后:while(connected){ try{ //System.out.println(""); //buffer=receiver.read(); buffer=receiver.read(buffer); try{ if(demux.receive(buffer)){ //System.out.println("Restant:"+buffer.remaining()+"Position:"+buffer.position()+"Limit:"+buffer.limit()); pact(); } }catch(Exceptione){ connected=false; /* connected=false; try{ clientSocket.close(); mainGUI.deleteUser(imei); }catch(IOExceptione1){ }*/ server.getGui().logErrTxt("ERROR:
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)老院醫(yī)療護(hù)理服務(wù)質(zhì)量制度
- 企業(yè)員工培訓(xùn)管理制度
- 會議主題確定與方向引導(dǎo)制度
- 2026年哲學(xué)專業(yè)知識競賽試題及答案詳解
- 2026年健康生活指南測試題目
- 2026年食品專業(yè)碩士考試預(yù)測模擬卷
- 2026年陽光房搭建合同
- 2026年新版天體測量協(xié)議
- 2024年趙縣幼兒園教師招教考試備考題庫含答案解析(奪冠)
- 2024年浮山縣招教考試備考題庫及答案解析(奪冠)
- 抖音來客本地生活服務(wù)餐飲商家代運(yùn)營策劃方案
- 《氫能燃燒系統(tǒng)燃燒器》編制說明
- 河南省新鄉(xiāng)市2024-2025學(xué)年七年級上學(xué)期期末考試地理試題(含答案)
- 市政雨污水管排水工程監(jiān)理實(shí)施細(xì)則
- 鋁錠居間合同樣本
- 新概念第一冊雙課聽力文本全(英文翻譯)
- 三高知識課件
- 租賃手機(jī)籌資計劃書
- 電子束直寫技術(shù)講座
- 項(xiàng)目監(jiān)理人員廉潔從業(yè)承諾書
- 短篇文言文翻譯
評論
0/150
提交評論