計算機遠程控制軟件的設計與開發(fā)畢業(yè)論文.doc_第1頁
計算機遠程控制軟件的設計與開發(fā)畢業(yè)論文.doc_第2頁
計算機遠程控制軟件的設計與開發(fā)畢業(yè)論文.doc_第3頁
計算機遠程控制軟件的設計與開發(fā)畢業(yè)論文.doc_第4頁
計算機遠程控制軟件的設計與開發(fā)畢業(yè)論文.doc_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

xx學院本科生畢業(yè)論文計算機遠程控制軟件的設計與開發(fā)Computer Remote? Control Software Design and Development院 系計算機科學與工程學院專 業(yè)計算機科學與技術學 生 班 級xx級xx班姓 名xx學 號xx指導教師單位計算機科學與工程學院指導教師姓名xxx指導教師職稱講師計算機遠程控制軟件的設計與開發(fā)計算機科學與技術2009級00班 xxx指導教師 xxx摘要隨著網絡技術的飛速發(fā)展,遠程控制協助軟件越來越受到人們的重視。計算機遠程控制技術是計算機系統(tǒng)管理人員在異地通過計算機網絡連接目標計算機,由本地計算機對遠程計算機進行管理和維護的行為。基于JAVA 與Socket編程技術結合的C/S遠程監(jiān)控系統(tǒng)軟件突破了空間的限制,使用者不用親自到目標地點,直接通過網絡就能實現對被控機器的監(jiān)控,并且有著友好的操作界面。本系統(tǒng)采用Java網絡編程和Java圖形編程實現。本系統(tǒng)在開發(fā)過程中,將計算機網絡技術與遠程控制理論基礎相結合。本遠程控制軟件包括遠程資源管理器、遠程監(jiān)控、遠程CMD控制臺三大模塊,實現了對被控機磁盤文件的上傳、下載、刪除,實現對鼠標、鍵盤的模擬以及屏幕截取,實現了遠程執(zhí)行DOS命令,實現了遠程關機。本系統(tǒng)從設計最初到具體實現、優(yōu)化、測試都嚴格遵循軟件工程的思想。 關鍵詞:Java;Socket;C/S;遠程控制;屏幕截??;DOS命令。Computer Remote Control Software Design and DevelopmentComputer Science and Technology xxx-xx xxxxSupervisor xxxAbstract With the rapid development of network technology, the remote control to assist software by more and more peoples attention. Computer remote control technology is a computer system management personnel in different through the computer network connection target computer, the local computer to the remote computer management and maintenance of behavior. Based on JAVA and Socket programming technology in combination with C/S remote monitoring system software broke through the limitation of space, users need not personally to the target location, directly through the network can achieve for the controlled machine monitoring, and have a friendly operation interface. This system uses Java network programming and Java graphical programming realization. This system in the development process, the computer network technology and remote control theory foundation combined. The remote control software including remote resource manager, remote monitoring, remote CMD console three modules, realize the accused of machine disk file upload, download, delete, realize the simulation of the mouse, keyboard and screen capture, realized the remote implement DOS command, realized the remote shutdown. This system from design to implementation first, optimization and testing are strictly follow the concept of software engineering. Keywords: Java;Socket; C/S; Remote control; Screen capture; DOS command.目錄1 引言111.1 遠程控制軟件的研究現狀和前景221.2 課題研究的目的和意義321.3 課題研究的主要內容332 系統(tǒng)分析332.1 系統(tǒng)功能分析332.2 系統(tǒng)軟件模型432.3 系統(tǒng)的開發(fā)平臺442.3.1 Eclipse介紹442.3.2 Java語言443 主要技術支持553.1 Socket553.2 Socket分類773.3 基本套接字函數調用883.3.1創(chuàng)建套接字993.3.2建立套接字連接993.3.3數據傳輸993.3.4關閉套接字11113.4 C/S結構特點及發(fā)展11113.5 TCP/IP體系結構12123.5.1網絡層12123.5.2互聯層12123.5.3 傳輸層13133.5.4應用層13133.6 多線程13133.7 Java遠程控制的基本原理14144 C/S模式遠程控制系統(tǒng)的設計實現16164.1 主要實現功能16164.2 Client(監(jiān)控端)設計16164.2.1文件操作client.files17174.2.2遠程控制臺client.cmd21214.2.3遠程監(jiān)控client.view23234.2.4關機26254.2.5退出26264.2.6幫助26264.3 Server(被控端)設計27264.3.1文件操作(server.files)27274.3.2 CMD控制臺(server.cmd)32324.3.3遠程監(jiān)控實現(server.view)33334.4軟件測試與分析33334.4.1軟件測試的重要性33334.4.2測試實例的研究與選擇34344.4.3測試環(huán)境與測試條件35354.4.4系統(tǒng)部分模塊測試情況35355 總結與展望3636致謝3736參考文獻3837xxx學院本科生畢業(yè)論文(設計)1 引言現如今,隨著網絡的快速發(fā)展,越來越多的企業(yè)都建立了自己的內部網絡。面對眾多的部門聯網計算機,對于人數相對偏少的網絡管理員來說,如果每臺計算機都需要親臨維護既浪費時間,工作效率也極低,因此他們希望對整個網絡上的計算機能實現遠程控制操作;也希望能實現遠程傳輸文件操作;同時還能查看實時的計算機運行狀態(tài)和進行一些相關操作;希望能夠傳輸文件;希望能夠防止病毒的蔓延、非法程序的拷貝、杜絕某些用戶的越權或非法操作等。因此,對于一個網絡管理員來說,一個合適的遠程協控制軟件是至關重要的。我們熟知的遠程控制技術,最早始于DOS時代,當時并沒有現在的條件與技術,而且也網絡不發(fā)達,市場沒有更高的要求,所以遠程控制技術沒有引起許多人的注意。但如今,隨著網絡的飛速發(fā)展,隨著人們對電腦的管理及技術支持的需要的不斷提高,遠程操作及控制技術越來越引起人們的關注。遠程控制一般支持下以下網絡類型:LAN、WAN、撥號方式、互聯網方式。除此之外,實現遠程控制的方式還有通過串口、并口、紅外端口等通信方式。對于傳統(tǒng)的遠程控制軟件,一般使用NETBEUI、NETBIOS、IPX/SPX、TCP/IP等協議來實現遠程控制。隨著網絡技術的發(fā)展,越來越多的遠程控制軟件提供通過C/S模式以Java語言來開遠程控制軟件。對于現如今流行的遠程控制軟件,一般分兩個部分:客戶端Client,和服務器端Server。實用方法是,先將客戶端安裝到主控計算機上,將服務端程序安裝在被控制電腦上,然后在主控端電腦上執(zhí)行Client端程序,并且向被控端電腦中的Server端程序發(fā)出信號,建立基于TCP協議的遠程服務連接,然后通過這個遠程服務,使用各種遠程控制功能發(fā)送遠程控制命令,Server端響應接收到的命令并執(zhí)行相應的操作,我們稱這種遠程控制方式為基于遠程服務連接的遠程控制。通過遠程控制軟件,我們可以進行很多方面的遠程控制,包括截取目標電腦屏幕圖像、窗口以及進程目錄;記錄并提取遠端鍵盤事件;可以打開、關閉目標電腦的任意目錄并實現資源共享;管理遠端電腦的文件和文件夾;關閉或者重新啟動遠端電腦中的操作系統(tǒng)等。 上面主要表述的一般是一對一的基于遠程服務的遠程控制實現原理,其實,如今最實用的遠程控制軟件最理想的模式應該是一對多,即一臺控制機可以控制多臺電腦。這對于如今的意義就好像一個大型的企業(yè),如果控制端能夠直接控制全部電腦,即顯示全部電腦目錄,再進行一些列的操作,如遠程桌面協助,遠程資源管理器,都將帶來極大的方便。一般的遠程控制程序的優(yōu)點在于,方便技術人員進行遠程維護或協助,技術人員再也不用親臨到實地操作,只需通過互聯網,就可以方便的進行諸如應用程序的上傳,部署,或是對遠程故障機的協助操作等等,極大的節(jié)省了人力物力,大大的提高了工作效率。當然,凡是有利必有弊,隨著互聯網的普及,遠程控制技術也是如今黑客惡意攻擊的主要手段,諸如一些木馬控制程序等,不僅侵犯了他人的隱私,也嚴重的違反了國家法律。但是遠程控制技術對于人類日常生活也是很重要的,如何利用好這門技術造福人類,這也是我研究這門課題的意義。本軟件就是基于此而設計開發(fā)的,能實現以下的基本的遠程功能: (1) 查看被控制端的文件目錄清單,即遠程資源管理器;(2) 拷貝被控制端的文件到控制端,同時也能上傳文件到被控端,或刪除被控端文件;(3) 強迫被控制端重新啟動或關機;(4) 直接執(zhí)行任何可執(zhí)行命令,打開應用程序;(5) 控制被控制端的屏幕,在本地直接操作被控制端計算機;而且做了一些必要的安全性考慮。1.1 遠程控制軟件的研究現狀和前景在飛速發(fā)展的今天,包括涵蓋遠程辦公、遠程教育、遠程維護、遠程協助以及企業(yè)管理等都屬于遠程控制涉及的應用領域。隨著應用領域的越來越廣泛,使用的價值也不斷提高,市場需求也越來越明顯。目前比較出名的遠程控制軟件例如PeerYou,VCN,Oray等都具有高效的信息交互和傳輸能力,以及實現跨平臺的高效遠程控制。C/S模式遠程控制軟件充分利用網絡資源,以普通PC機為控制設備,通過面向對象以及模塊化的程序設計,有著低成本、高實用性、可靠性和可擴展性的優(yōu)點。綜合以上原因,我決定通過一定的理論知識與實踐來嘗試學習此類知識,并且使用Java編程語言結合C/S模式實現一款遠程控制軟件。1.2 課題研究的目的和意義通過學習遠程控制軟件的相關技術知識來更深刻的理解TCP/IP協議以及Socket編程原理;通過實現代碼的編寫來達到對Java語言編程能力的鍛煉以及增加對程序代碼優(yōu)化的經驗。1.3 課題研究的主要內容基于Windows的遠程控制軟件開發(fā)畢業(yè)設計的主要任務是要求做出從系統(tǒng)角度出發(fā)的基于C/S開發(fā)模式與遠程控制技術的實用軟件。使用Socket網絡編程技術及Java程序開發(fā)語言。實現基本的遠程控制要求,界面簡潔友好。采用面向對象開發(fā)技術,嚴格遵循軟件工程設計思想。要求:(1) 基于C/S模式架構;(2) 實現截屏、執(zhí)行遠程CMD命令,遠程關機等功能;(3) 軟件安全、穩(wěn)定、可靠;(4) 至少能在兩臺計算機之間進行控制演示;(5) 界面簡潔友好。2 系統(tǒng)分析2.1 系統(tǒng)功能分析本遠程控制軟件由Server(服務器)和Client(客戶端)兩部分組成,并且需要使用者在服務端與客戶端同時運行相應程序來實現,具體步奏如下:第一步,服務器端運行相應程序,使服務器端口處于監(jiān)聽狀態(tài),這里本遠程控制軟件使用了三個端口(30018,30011,30012);啟動服務器后,被控端計算機則處于等待連接狀態(tài)。第二步,運行客戶端程序,輸入被控端IP,服務端準備響應,然后程序自動連接到指定IP的遠程計算機。到目前為止,整個連接步奏則完成,這個程序之間已經建立了基于TCP協議的遠程服務連接,進入使用界面后便可進行相應操作。2.2 系統(tǒng)軟件模型本系統(tǒng)采用C/S程序開發(fā)模式設計,由Server端(服務端)與Client端(客戶端)兩部分組成,下面是結構圖:圖 2.1 程序結構圖Fig.2.1 The chart of program structure 對客戶端的設計,一直遵循面向對象的設計思想,堅持界面友好,易操作;對于服務端的設計則偏于簡潔實用,啟動后顯示界面位于屏幕的右下角,只進行操作的反饋,詳盡的設計過程將在接下來介紹。2.3 系統(tǒng)的開發(fā)平臺2.3.1 Eclipse介紹本軟件實用的主要開發(fā)工具之一Eclipse 是一個開放源代碼的、基于Java的可擴展開發(fā)平臺。它本身就是使用Java語言開發(fā)的,其本身就包含了括Java開發(fā)工具(Java Development Kit,JDK),使用Eclipse進行Java程序開發(fā)不僅方便管理,而且也能大大提高開發(fā)效率。 2.3.2 Java語言早期的Java是使用在家用電器等小型系統(tǒng)的編程語言,被稱為Oak。用來解決家用電器的控制和通訊問題,如電視機、電話、鬧鐘、烤面包機等。由于這些智能化家電的市場需求沒有預期的高,Sun放棄了該項計劃。就在Oak將要失敗的時候,隨著互聯網的發(fā)展,Sun看到了Oak在計算機網絡上的廣闊應用前景,于是現在廣為流傳使用的Java誕生了。 Java 編程語言的風格非常接近C、C+。Java是一個完全面向對象的程序設計語言,它繼承了 C+ 語言面向對象技術的同時舍棄了C+語言中容易引起錯誤的指針(以引用取代)、運算符重載(operator overloading)、多重繼承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的對象所占據的內存空間,使得程序員不用再為內存管理而擔憂。在 Java SE 1.5 版本中,Java 又引入了泛型編程(Generic Programming)、類型安全的枚舉、不定長參數和自動裝/拆箱等語言特性。 Java 不同于一般的編譯執(zhí)行計算機語言和解釋執(zhí)行計算機語言。它首先將源代碼編譯成二進制字節(jié)碼(byte code),然后依賴各種不同平臺上的虛擬機來解釋執(zhí)行字節(jié)碼,從而實現了“一次編譯、到處執(zhí)行”的跨平臺特性。不過,每次的編譯執(zhí)行需要消耗一定的時間,這同時也在一定程度上降低了 Java 程序的運行效率。但在 J2SE 1.4.2 發(fā)布后,Java 的執(zhí)行速度有了大幅提升。 與傳統(tǒng)程序不同,Sun 公司在推出 Java 之際就將其作為一種開放的技術。全球數以萬計的 Java 開發(fā)公司被要求所設計的 Java 軟件必須相互兼容?!癑ava 語言靠群體的力量而非公司的力量”是 Sun 公司的口號之一,并獲得了廣大軟件開發(fā)商的認同。這與微軟公司所倡導的注重精英和封閉式的模式完全不同。 Sun 公司對 Java 編程語言的解釋是:Java 編程語言是個簡單、面向對象、分布式、解釋性、健壯、安全與系統(tǒng)無關、可移植、高性能、多線程和動態(tài)的語言。 Java 平臺是基于 Java 語言的平臺。這樣的平臺目前非常流行,因此微軟公司推出了與之競爭的.NET平臺以及模仿 Java 的 C#語言。3 主要技術支持C/S是當今比較流行與具有發(fā)展?jié)摿Φ募夹g之一。使用C/S模式設計的客戶、服務器應用系統(tǒng)具有系統(tǒng)結構優(yōu)化、資源利用率高、整體運算速度快的優(yōu)點,因而得到了廣泛的應用。Socket網絡編程技術也是當今主要的進程之間的通信方式,它利用客戶/服務器模式巧妙地解決了進程之間建立通信連接的問題?;贑/S模式于Socket網絡編程技術,本遠程控制程序才能得以實現。3.1 Socket20世紀80年代初,美國政府的高級研究工程機構(ARPA)給加利福尼亞大學Berkeley分校提供資金,讓他們在UNIX操作系統(tǒng)下實現TCP/IP協議。在這個項目中,研究人員為TCP/IP網絡通信開發(fā)了一個應用程序接口(API)。這個API就稱為Socket接口。今天,Socket接口是TCP/IP網絡最通用的API,也是在Internet上進行應用開發(fā)最為通用的API。事實上,Socket(套接字)就是在計算機之間提供了一個通信端口。通過這個端口,一臺計算機可以與任何具備套接字的網間計算機進行通信。一個Socke只通信的一端,在這一端上可以找到與其對應的一個名字。一個正在被使用的套接口都有它的類型和與其相關的進程,Socket存在于整個通信域中,與對應的并且在相同域的Socket進行數據交換,即通信。應用程序在網絡上傳輸,接收的信息都通過這個套接口來實現。在應用開發(fā)種就像使用文件句柄一樣,可以對Socket句柄進行讀寫操作。開始使用套接字編程之前,首先必須了解什么是網間進程通訊,什么是服務方式,以及C/S軟件開發(fā)模式。進程間通信的最初概念來源于單機系統(tǒng)。由于每個進程都在自己的地址區(qū)域范圍內運行,為了保證進程間能相互通信而又不干涉他們自己的工作,操作系統(tǒng)被要求提供相應的設施,如UNIX BSD中的管道(Pipe)、命名管道(Named Pipe)和軟中斷信號(Signal)、UNIX System V的消息(Message)、共享存儲區(qū)(Shared Memory)和信號量(Semaphore)等,但都僅限于用在本機進程之間的通信。網間域中的計算機要通信必須解決不同計算機中進程相互通訊的問題。為此,首先要解決的是網間進程標識問題,同一計算機上,不同進程可以用進程號(Process ID)作為唯一標識,但到了網絡環(huán)境下,不同的計算機中很可能存在擁有相同進程號的進程,比如A計算機存在進程號為101,B計算機也很可能存在進程號名為101的進程。其次,用于網絡通訊的協議眾多,不同的協議也有自己獨有的辨識方式,因此,要實現網間域內計算機通訊還要解決眾多協議識別的問題。在網絡的分層模型中,各層嚴格遵循著單向依賴,各層之間分工明確,但又相互協作,他們之間的協作主要體現在各相鄰層邊緣的應用上?!胺铡笔敲枋鱿噜弻又g關系的抽象概念,即網絡中各層向緊鄰上層提供的一組操作。下層是服務的提供者,上層是請求服務的用戶。服務的表現形式是原語(Primitive),如系統(tǒng)調用或庫函數等。系統(tǒng)調用是操作系統(tǒng)內核向網絡應用程序或高層協議提供的服務原語。在國際標準化組織(ISO)的術語中,網絡層及其以下各層又稱為通信子網,只是實現了點對點之間的通信,沒有程序或進程的概念。而傳輸層實現的是“端到端”通信,引進網間進程通信概念,同時也要解決差錯控制、流量控制、數據排序(報文排序)及連接管理等問題。為此提供不同的服務方式:面向連接(虛電路)的服務或無連接的服務。面向連接服務是電話系統(tǒng)服務模式的抽象,即每一次完整的數據傳輸都要經過建立、連接、數據傳輸及終止連接的過程。在數據傳輸過程中,各數據分組不攜帶目的地址,而使用連接號(Connect ID)。本質上,連接是一個通信管道,收發(fā)數據順序一直,內容相同。其中TCP協議就提供面向連接的可靠通信協議。無連接的服務是郵政系統(tǒng)服務的抽象,每個分組都攜帶完整的目的地址,各分組在系統(tǒng)中獨立傳送。無連接服務不能保證分組的先后順序,不進行分組出錯的恢復與重傳,不保證傳輸的可靠性。提供無連接的數據報服務的常用協議是UDP協議。在TCP/IP網絡應用中,兩個進程之間的相互通信主要基于C/S模式(Client/Server)。即客戶端向服務端發(fā)出請求,服務端接收待來自客戶端的請求好,調用相應的服務。C/S模式的建立基于以下兩點:首先,建立網絡的起因是網絡中軟硬件資源、運算能力和信息不均等,需要共享,從而造就擁有眾多資源的主機提供服務,資源較少的客戶請求服務這一非對等作用;其次,網間進程通信完全是異步的,相互通信的進程間既不存在父子關系,又不共享內存緩沖區(qū),因此需要一種機制為希望通信的進程間建立聯系,為兩者的數據交換提供同步,這就是基于客戶機/服務器式的TCP/IP。3.2 Socket分類TCP/IP的Socket提供下列三種類型套接字。(1) 原始套接字該接口允許對較低層協議,如IP,ICMP的直接訪問。它通常用于檢驗新的協議實現或訪問現有服務配置中的新設備(2) TCP流式套接字如果我們需要一個可靠的連接,用來使數據按順序、無錯的發(fā)送到目標端,就需要流式套接字。流式套接字提供一種可靠的面向連接地傳輸方法。數據無重復、無差錯,并且按發(fā)送端發(fā)出數據的順序進行接收。不管對單個的數據報或者是一整個數據包,流式套接字都提供一種協議的歷史傳輸TCP。除此之外,在數據進行傳輸時,如果一端的連接斷開,則另一端的應用程序會接到通知。流式套接字內設流量控制,避免數據流超限;數據被看成字節(jié)流,無長度限制。(3) UDP數據報套接字數據報套接字是提供一種非連接、不可靠的通信方式。在這里的“不可靠”是指發(fā)送的數據不能得到保障,也不保障數據按原來發(fā)出時的順序到達目標端。數據包以獨立包形式被發(fā)送,不提供無錯保證,數據可能丟失或重復,并且順序混亂。事實上,一份數據可能不止一次被發(fā)送。對于基于Java的Socket網絡編程的TCP/IP實現,數據報套接字使用用戶數據報協議(UDP)。雖然在通常情況下,在同一臺計算機上的兩個進程或在輕負載的局域網所連接的兩臺計算機的進程之間進行通信時,可能不會出現數據包丟失或沒按照順序到達及又重復發(fā)送的情況,但在編寫實用UDP協議進行進程間通信的程序是,應考慮到這些情況,并且能做出應對措施。當然,如果為非常復雜的網絡(如Internet)編寫通信應用程序,就應該考慮到數據報套接字的不可靠性。如果應用程序不能很好的處理這些問題,很可能導致程序崩潰。盡管如此,數據報套接字在發(fā)送數據包或者記錄形數據時仍然有用。另外,數據報套接字還提供向多個目的地發(fā)送廣播數據包的能力。3.3 基本套接字函數調用大多數的數據報套接字應用程序都使用一個規(guī)定的事件序列來完成客戶應用程序與服務器之間的通信,如下圖所示:圖 3.1 信息交互Fig.3.1 Information interaction首先服務端與客戶端都要創(chuàng)建一個Socket(套接字),然后服務端ServerSocket綁定端口和IP,這樣客戶端就能使用同一端口表示服務器套接字,然后服務器與客戶端建立通信,即Sendto()和Recvfrom()信息交互。下面步奏介紹了套接字使用的步奏。3.3.1創(chuàng)建套接字Java對Socket操作進行了很好的封裝,即.ServerSocket類,此類實現服務器套接字。服務器套接字等待請求通過網絡傳入。它基于請求執(zhí)行某些操作,然后可能向請求者返回結果。在這里我們使用到的構造方法為ServerSocket(int port);該構造方法創(chuàng)建以本機IP為IP地址,以port為端口的套接字,參數port - 端口號;或者為 0,表示使用任何空閑端口。3.3.2建立套接字連接等待連接我們使用了.ServerSocket類的accept()方法,該方法偵聽并接受到此套接字的連接。此方法在連接傳入之前一直阻塞。一旦接受到請求,則創(chuàng)建新的套接字與之連接交互信息。3.3.3數據傳輸有了套接字連接后,我們就可以進行任意的數據傳輸了。在自定義了Sendto()與Recvfrom()方法后則可進行任意數據傳輸。Java對傳輸流進行了很好的封裝,這里我們主要用到java.io以及javax.imageio 里面的流操作類:(1) javax.imageio. ImageIO類該類包含一些用來查找 ImageReader 和 ImageWriter 以及執(zhí)行簡單編碼和解碼的靜態(tài)便捷方法。主要用于遠程圖像的傳輸。read(URL input)方法:返回一個 BufferedImage,作為使用 ImageReader(它是從當前已注冊 ImageReader 中自動選擇的)解碼所提供 URL 的結果。InputStream 是從 URL 中獲得的,它被封裝在 ImageInputStream 中。write(RenderedImage im, String formatName, ImageOutputStream output)方法:使用支持給定格式的任意 ImageWriter 將一個圖像寫入 ImageOutputStream。從當前流指針開始將圖像寫入ImageOutputStream,并覆蓋該點之后的現有流數據(如果有)。 此方法在寫入操作完成后不會關閉提供的 ImageOutputStream;一個嚴謹的程序,應該在實用完后對流進行關閉,減輕系統(tǒng)負擔。(2) java.io. InputStream類read()方法:從輸入流中讀取數據的下一個字節(jié)。返回 0 到 255 范圍內的 int 字節(jié)值。如果因為已經到達流末尾而沒有可用的字節(jié),則返回值 -1。在輸入數據可用、檢測到流末尾或者拋出異常前,此方法一直阻塞。(3) java.io. OutputStream類write(int b)方法:將一個 integer(數組長度)寫入此流。(4) java.io. File類主要用于文件或目錄的操作。File(String pathname)方法:通過將給定路徑名字符串轉換為抽象路徑名來創(chuàng)建一個新 File 實例。如果給定字符串是空字符串,那么結果是空抽象路徑名。delete()方法:刪除此抽象路徑名表示的文件或目錄。如果此路徑名表示一個目錄,則該目錄必須為空才能刪除。exists()方法:測試此抽象路徑名表示的文件或目錄是否存在。isDirectory()方法:測試此抽象路徑名表示的文件是否是一個目錄。isFile()方法:測試此抽象路徑名表示的文件是否是一個標準文件。list()方法:返回一個字符串數組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。mkdirs()方法:創(chuàng)建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。listRoots()方法:列出可用的文件系統(tǒng)根。(5) java.lang.Runtime類exec(String command)方法:在單獨的進程中執(zhí)行指定的字符串命令。參數command:一條指定的系統(tǒng)命令。(6) java.awt.Robot類使用該類提供的一系列方法可以模擬鼠標、鍵盤操作事件以及屏幕截圖,達到遠程監(jiān)控的目的。createScreenCapture(Rectangle screenRect)方法:創(chuàng)建包含從屏幕中讀取的像素的圖像。該圖像不包括鼠標光標。mouseMove(int x, int y)方法:將鼠標指針移動到給定屏幕坐標。mouseWheel(int wheelAmt)方法:在配有滾輪的鼠標上旋轉滾輪。keyPress(int keycode)方法:按下給定的鍵。應該使用 keyRelease 方法釋放該鍵。keyRelease(int keycode)方法:釋放給定的鍵。mousePress(int buttons)方法:按下一個或多個鼠標按鈕。應該使用 mouseRelease 方法釋放鼠標按鈕。mouseRelease(int buttons)方法:釋放一個或多個鼠標按鈕。以上為數據交互使用到的Java類,Java很好的封裝了這些操作,使得程序的設計簡單又結構性強,更好的體現了Java的面向對象特性。3.3.4關閉套接字在數據交互完成后,都要改關閉不在使用的Socket,本遠程控制軟件使用了close()方法關閉此套接字。 所有當前阻塞于此套接字上的 I/O 操作中的線程都將拋出SocketException。 套接字被關閉后,便不可在以后的網絡連接中使用(即無法重新連接或重新綁定)。關閉此套接字也將會關閉該套接字的 InputStream 和 OutputStream。 如果此套接字有一個與之關聯的通道,則關閉該通道。3.4 C/S結構特點及發(fā)展C/S又稱Client/Server或客戶/服務器模式。它是軟件系統(tǒng)體系結構,通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務合理分配到Client端和Server端來實現,降低了系統(tǒng)的通訊開銷。目前大多數應用軟件系統(tǒng)都是Client/Server形式的兩層結構,由于現在的軟件應用系統(tǒng)正在向分布式的Web應用發(fā)展,Web和Client/Server 應用都可以進行同樣的業(yè)務處理,應用不同的模塊共享邏輯組件;但兩種應用都有著自己的優(yōu)勢,怎么使用取舍取決于對業(yè)務的需求。傳統(tǒng)的C/S體系結構雖然采用的是開放模式,但這只是系統(tǒng)開發(fā)一級的開放性,在特定的應用中無論是Client端還是Server端都還需要特定的軟件支持。由于沒能提供用戶真正期望的開放環(huán)境,C/S結構的軟件需要針對不同的操作系統(tǒng)系統(tǒng)開發(fā)不同版本的軟件, 加之產品的更新換代十分快,已經很難適應百臺電腦以上局域網用戶同時使用。而且代價高, 效率低。但是Java的平臺無關性可以很好的解決這個問題,實用Java開發(fā)的應用程序,不管在什么樣的操作系統(tǒng)中都能得到很好的支持。用C/S模式設計本系統(tǒng)的優(yōu)勢在于:(1) 應用服務器運行數據負荷較輕。最簡單的C/S體系結構的數據庫應用由兩部分組成,即客戶應用程序和服務器程序。二者可分別稱為客戶端與服務端。運行服務端的機器,也稱為應用服務器。一旦服務器程序被啟動,就隨時等待響應客戶程序發(fā)來的請求;客戶應用程序運行在用戶自己的電腦上,對應服務器,可稱為客戶電腦,當需要對遠程控制端進行操作時,客戶程序就自動地尋找服務器程序,并向其發(fā)出請求,服務器程序根據預定的規(guī)則作出應答,送回結果,應用服務器運行數據負荷較輕。(2) 服務端對于業(yè)務邏輯進行和很好的封裝。對于客戶端傳來的請求,服務端進行很好的處理,這里我們把處理響應的業(yè)務邏輯都封裝在服務端里,使得客戶端顯得非?!笆菪 ?,是軟件實用更加靈活。除此之外,C/S模式設計的軟件能充分發(fā)揮客戶端PC的處理能力,很多工作可以在客戶端處理后再提交給服務器。對應的優(yōu)點就是客戶端響應速度快。3.5 TCP/IP體系結構TCP/IP這個協議遵守一個四層的模型概念:應用層、傳輸層、網絡互聯層和網絡層3.5.1網絡層TCP/IP模型的基層是網絡接口層。負責數據幀的發(fā)送和接收,幀是獨立的網絡信息傳輸單元。網絡接口層將幀放在網上,或從網上把幀取下來。實際上TCP/IP參考模型沒有真正描述這一層的實現,只是要求能夠提供給其上層網絡互連層一個訪問接口,以便在其上傳遞IP分組。由于這一層次未被定義,所以其具體的實現方法將隨著網絡類型的不同而不同。3.5.2互聯層網絡互連層是整個TCP/IP協議棧的核心。它的功能是把分組發(fā)往目標網絡或主機。同時,為了盡快地發(fā)送分組,可能需要沿不同的路徑同時進行分組傳遞。因此,分組到達的順序和發(fā)送的順序可能不同,這就需要上層必須對分組進行排序。網絡互連層定義了分組格式和協議,即IP協議(Internet Protocol)。網絡互連層除了需要完成路由的功能外,也可以完成將不同類型的網絡(異構網)互連的任務。除此之外,網絡互連層還需要完成擁塞控制的功能?;ヂ搮f議將數據包封裝成internet數據報,并運行必要的路由算法。這里有四個互聯協議:(1) 網際協議IP:負責在主機和網絡之間尋址和路由數據包。(2) 地址解析協議ARP:獲得同一物理網絡中的硬件主機地址。(3) 網際控制消息協議ICMP:發(fā)送消息,并報告有關數據包的傳送錯誤。(4) 互聯組管理協議IGMP:被IP主機拿來向本地多路廣播路由器報告主機組成員。3.5.3 傳輸層傳輸協議在計算機之間提供通信會話。傳輸協議的選擇根據數據傳輸方式而定。兩個傳輸協議:(1) 傳輸控制協議TCP:為應用程序提供可靠的通信連接。適合于一次傳輸大批數據的情況。并適用于要求得到響應的應用程序。(2) 用戶數據報協議UDP:提供了無連接通信,且不對傳送包進行可靠的保證。適合于一次傳輸小量數據,可靠性則由應用層來負責。3.5.4應用層TCP/IP模型將OSI參考模型中的會話層和表示層的功能合并到應用層實現。應用層面向不同的網絡應用引入了不同的應用層協議。其中,有基于TCP協議的,如文件傳輸協議(File Transfer Protocol,FTP)、虛擬終端協議(TELNET)、超文本鏈接協議(Hyper Text Transfer Protocol,HTTP),也有基于UDP協議的。3.6 多線程在一個應用程序中,一些獨立運行的程序片斷被稱作“線程”(Thread),利用它編程的概念就叫作“多線程技術”。多線程技術一個常見的例子就是用戶界面。利用線程當用戶按下按鈕后,方法與主界面流程可以一起往下執(zhí)行,而不是等待方法執(zhí)行后才繼續(xù)往下。在計算機編程中,一個基本的概念就是同時對多個任務加以控制。許多程序設計問題都要求程序能夠同步的處理工作,即工作能同時進行,而不是等待一個方法執(zhí)行完后再接著執(zhí)行主進程。對于不同的需求,可以通過多種途徑達到這個目的。最開始的時候,那些掌握機器低級語言的程序員編寫一些“中斷服務例程”,主進程的暫停是通過硬件級的中斷來實現的。盡管這個方法很有用,但這樣的程序很難移植,由此造成了另一類的代價高昂問題。中斷對那些實時性很強的任務來說是很有必要的。但對于其他許多問題,只要求將問題劃分進入獨立運行的程序片斷中,使整個程序能更迅速地響應用戶的請求。最開始,線程只是用于分配單個處理器的處理時間的一種工具。但假如操作系統(tǒng)本身支持多個處理器,那么每個線程都可分配給一個不同的處理器來處理,真正進入“并行運算”狀態(tài)。從程序設計語言的角度看,多線程操作最有價值的特性之一就是程序員不必關心到底使用了多少個處理器。程序在邏輯意義上被分割為數個線程;假如機器本身安裝了多個處理器,那么程序會運行得更快,毋需作出任何特殊的調校。如果僅局限于如上的操作,那多線程就太簡單了。其實不然,實用多線程必須解決一個重要的問題:資源共享。如果有多個線程同時運行,而且它們都需要使用到這個資源,就會遇到資源共享的問題。例如兩個進程不能同時調用同一臺打印機打印,必須等一個進程結束運行后另一個進程在進行調用。為解決這個問題,對那些可共享的資源來說(比如打印機),它們在使用期間必須進入鎖定狀態(tài)。所以一個線程可將資源鎖定,在完成了它的任務后,再解開(釋放)這個鎖,使其他線程可以接著使用同樣的資源,這就是所謂的進程同步問題。多線程是為了同步完成多項任務,不是為了提高運行效率,而是為了提高資源使用效率來提高系統(tǒng)的效率。線程是在同一時間需要完成多項任務的時候實現的。使用多線程的好處:(1) 使用線程可以把占據長時間的程序中的任務放到后臺去處理,用戶界面可以更加吸引人,比如,我在單擊了遠程控制后,任然能進行資源管理器操作,而不是等遠程操作結束后才能進行資源管理器操作。(2) 程序的運行速度可能加快。因為是“同步執(zhí)行”的,不需要等待,所以可以加快程序的運行速度。(3) 在一些需要阻塞等待操作的程序中,線程是很實用的,如數據傳輸,等待連接,等待輸入等,并不一定要上述方法都執(zhí)行,主進程才能繼續(xù)執(zhí)行,這樣帶來的方便是非常大的。3.7 Java遠程控制的基本原理(1) Socket 、ServerSocketSocket 位于.包中,這是一個對于網絡通信來說及其重要的類,無論是那種語言,都會有Socket網絡編程的應用方法,存在的差異也僅僅是在表示和組織上有所不同,Socket中文稱它為套接字,Java API中可以查看相應的介紹,主要由ServerSocket和Socket之間建立連接。一個ServerSocket構造一對通信套接字方法如下: ServerSocket sr=new ServerSocket(port); Socket sc=new Socket(ip,port); 其中ServerSocket 的accpet()方法十分重要,當一個服務套接字建立之后它會一直阻塞等待一個套接字的請求,直到建立連接。部分計算機網絡的書籍對套接字有這樣的定義為端口+IP地址;一個套接字是由一個由一個IP地址和一個端口組成的,在網絡通信中的底層實現也的確如此,要建立進程之間的通信就必須使用一個未被占用的端口進行等待連接,在連接端口之后才能在該端口上通信,以實現進程間的通信。(2) InputStream 、OutputStream當一個套接字連接成功后就可以獲得基于這個套接字的輸入、輸出流,一切數據的發(fā)送和接受都離不開輸出、輸入流,我們可以通過流封裝的方法選擇你要輸入或者輸出的數據類型,通過轉換流可以把輸入、輸出流轉換到我們需要的數據傳輸類型。(3) 認識RPCRPC 是英文遠程方法調用的縮寫,見名知意,就是在本地計算機上調用遠程計算機上的方法或者過程。 既然我們已經能通過Socket進行網間進程通訊,進行數據傳輸,那么,往更深一層去想,如果是傳輸命令讓計算機做出響應呢?因此,實現這一假設的過程,即為遠程控制軟件設計的基礎思想。在這里Java提供了一個非常好的命令響應的封裝類RunTime類,該類提供方法執(zhí)行諸如CMD控制命令。 Runtime ec=Runtime.getRuntime(); ec.exec(命令); Exec()方法就可以放入你想要運行的命令這樣你就可以在機器上運行你的指令了。那么到目前為止,一個基于Java語言開發(fā)的遠程控制程序的雛形就展現在我們面前了,試想,如果我們能遠程調用CMD命令已經相當于無所不能了。以上就是一個簡易的Java遠程控制的實現,當然本系統(tǒng)的設計要比此步奏復雜許多,但是基本原理相同。4 C/S模式遠程控制系統(tǒng)的設計實現4.1 主要實現功能(1) 查看被控制端的文件目錄清單;(2) 下載、上傳、刪除文件;(3) 強迫被控制端重新啟動或關機;(4) 直接執(zhí)行任何可執(zhí)行命令,打開應用程序;(5) 控制被控制端的屏幕,在本地直接操作被控制端計算機;4.2 Client(監(jiān)控端)設計Client的界面設計使用的是Java提供的GUI,具體界面如下圖圖 4.1 客戶端Fig.4.1 Client主要包括登錄、遠程資源管理器、遠程控制監(jiān)視、遠程控制臺、遠程關機、退出以及幫助。主要用于發(fā)送相應命令以及處理相應返回信息,具體流程如下圖所示:圖 4.2 客戶端流程Fig.4.2 The client processes4.2.1文件操作client.files文件操作包含客戶端的上傳文件(SendFile)、下載文件(DownFile),文件一般操作(FileControl)以及初始化被控端磁盤(getIniDrivers)。(1) 初始化被控端磁盤(getIniDrivers)作為資源管理器第一個步驟,首先要初始化磁盤,既獲得被控端磁盤驅動情況,具體體現在操作界面右側的磁盤目錄樹上,主要實現方法為程序啟動之初,接受由Server端發(fā)來的磁盤信息,然后解析為磁盤字符數組,再體現到操作界面上。該類主要在初始化的時候調用。主要用到public String getDrivers()方法,該方法接收來自服務器的數據,并轉換為字符串數組。然后初始化磁盤數到顯示界面,代碼如下:for (int i = 0; i countc; i+) pcii = new JPanel();cc.add(pcii);cc1i = new JButton(new ImageIcon(srcclientimgeshd-network.png);cc1i.setPreferredSize(new Dimension(25, 28);cc1i.setRequestFocusEnabled(false); / 設置不需要焦點cc1i.setBorderPainted(false);/ 不繪制邊框cc1i.addActionListener(this);pcii.add(cc1i);cc2i = new JLabel(driversi);pcii.add(cc2i);其中driversi就是調用初始化磁盤方法返回的字符數組。(2) 文件一般操作(FileCon

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論