杜興華
摘要:遠程控制系統(tǒng)JPCAnyWhere采用主控端/被控端的設計結構,通過對系統(tǒng)事件隊列進行Socket通信的方法傳遞事件。通過Java JDK中的Robot對象,該對象可以完成屏幕圖像截取,控制鼠標,鍵盤,如此便可以輕而易舉地實現(xiàn)遠程計算機的控制。遠程控制系統(tǒng)JPCAnyWhere通過在主控端輸入被控端的IP地址進行連接識別,在被控端通過Robot截取桌面圖像,通過Socket通信傳給主控端,同時應用Java多線程的控制方法傳送、接受圖像和各種事件。本文對遠程控制系統(tǒng)JPCAnyWhere進行了介紹,詳細分析了其設計原理,主控端和被控端的設計流程,并測試了JPCAnyWhere的各項功能。
關鍵詞:Java;遠程控制;Robot類;Socket;多線程
一、計算機遠程控制相關技術綜述
遠程控制技術基于Java的遠程控制系統(tǒng)的設計與實現(xiàn),電腦中的遠程控制技術始于DOS時代,當時由于技術上沒有什么大的變化,網(wǎng)絡不發(fā)達,市場沒有更高的要求,所以遠程控制技術沒有引起更多人的注意。但是,隨著網(wǎng)絡的高度發(fā)展,電腦的管理及技術支持的需要,遠程操作及控制技術越來越引起人們的關注。遠程控制一般支持下面的這些網(wǎng)絡方式:LAN、WAN、撥號方式、互聯(lián)網(wǎng)方式。此外,有的遠程控制軟件還支持通過串口、并口、紅外端口來對遠程機進行控制。傳統(tǒng)的遠程控制軟件一般使用NETBEUI、NETBIOS、IPX/SPX、TCP/IP等協(xié)議來實現(xiàn)遠程控制,隨著網(wǎng)絡技術的發(fā)展,對遠程控制軟件提供通過Web頁面以Java技術來控制遠程電腦的需求不斷增多,這樣可以實現(xiàn)不同操作系統(tǒng)下的遠程控制。
二、系統(tǒng)分析
對于具體功能,用戶要求實現(xiàn)對被控端進行各種鼠標和鍵盤操作,包括獲取目標電腦屏幕圖像、遠程關機、打開應用程序等。主控端能夠顯示被控端桌面,并且把基于被控端圖像上的鍵盤,鼠標事件通過Socket通信傳給被控端;被控端能夠響應主控端的鼠標鍵盤事件。UDP協(xié)議的全稱是用戶數(shù)據(jù)報,在網(wǎng)絡中它與TCP協(xié)議一樣用于處理數(shù)據(jù)包。在OSI模型中,在第四層——傳輸層,處于IP協(xié)議的上一層。 UDP有不提供數(shù)據(jù)報分組、組裝和不能對數(shù)據(jù)包的排序的缺點,也就是說,當報文發(fā)送之后,是無法得知其是否安全完整到達的。
用戶數(shù)據(jù)報協(xié)議(UDP)是 OSI 參考模型中一種無連接的傳輸層協(xié)議,提供面向事務的簡單不可靠信息傳送服務。 UDP 協(xié)議基本上是 IP 協(xié)議與上層協(xié)議的接口。 UDP 協(xié)議適用端口分別運行在同一臺設備上的多個應用程序。
協(xié)議結構:
Source Port—16位。源端口是可選字段。當使用時,它表示發(fā)送程序的端口,同時它還被認為是沒有其它信息的情況下需要被尋址的答復端口。如果不使用,設置值為0。
Destination Port—16位。目標端口在特殊因特網(wǎng)目標地址的情況下具有意義。
Length—16位。該用戶數(shù)據(jù)報的八位長度,包括協(xié)議頭和數(shù)據(jù)。長度最小值為8。
Checksum—16位。IP 協(xié)議頭、UDP 協(xié)議頭和數(shù)據(jù)位,最后用0填補的信息假協(xié)議頭總和。如果必要的話,可以由兩個八位復合而成。
Data—包含上層數(shù)據(jù)信息。
UDP協(xié)議使用IP層提供的服務把從應用層得到的數(shù)據(jù)從一臺主機的某個應用程序傳給網(wǎng)絡上另一臺主機上的某一個應用程序。
在Java語言中,線程有如下特點:
§ 在一個程序中而言,主線程的執(zhí)行位置就是main。而其他線程執(zhí)行的位置,程序員是可以自定義的。值得注意的是對Applet也是一樣。
§ 每個線程執(zhí)行其代碼的方式都是一次順序執(zhí)行的。
§ 一個線程執(zhí)行其代碼是與其他線程獨立開來的。如果諸線程之間又相互協(xié)作的話,就必須采用一定的交互機制。
§ 前面已經(jīng)說過,線程是共享地址空間的,如果控制不當,這里很有可能出現(xiàn)死鎖。
三、系統(tǒng)總體設計
系統(tǒng)的實現(xiàn)原理如下:
(1)被控端通過Robot截取桌面圖像通過socket通信傳給主控端。
(2)主控端顯示被控端桌面,并且把基于被控端圖像上的鍵盤,鼠標事件通過socket通信傳給被控端。
(3)被控端響應主控端的鼠標鍵盤事件。
在系統(tǒng)設計過程中,將本著先進性、實用性、開放性、適應性、可擴展性、便利性、可靠性、安全性、經(jīng)濟性等原則。
遠程控制系統(tǒng)100%的自主開發(fā),不利用第三方組件,為系統(tǒng)的開放性、可擴展性、可靠性提供有力保證。
于Java的遠程控制系統(tǒng)JPCAnyWhere和其他遠程控制系統(tǒng)一樣具有網(wǎng)絡計算的功能,他們的不同之處就在于:基于Java的遠程控制系統(tǒng)JPCAnyWhere的設計重點是“與平臺無關”的特性,因此,我們的設計目標就是盡可能兼容各類計算機硬件和各種操作系統(tǒng)。在計算機硬件系統(tǒng)方面有大型機、工作站和 PC、Mac 等,在操作系統(tǒng)方面有 Windows 系列、Unix 系列、Linux 系列以及 Sun(R)Solaries系列等系統(tǒng)。
四、系統(tǒng)詳細設計與實現(xiàn)
主控端模塊的類及其作用,在確定軟件的包結構后,需要進一步確定軟件的類與接口。遠程控制系統(tǒng)JPCAnyWhere中各部分相對獨立,對于公共定義的各環(huán)境變量和線程管理接口等子模塊,可通過直接引用包含有該子模塊的類或接口來實現(xiàn)。
根據(jù)本遠程控制系統(tǒng)的實現(xiàn)方法。
五、結論
本課題參照現(xiàn)有的遠程控制軟件,開發(fā)了一個基于Java的遠程控制系統(tǒng)JPCAnyWhere。遠程控制系統(tǒng)JPCAnyWhere在Eclipse3.2平臺上由Java語言開發(fā),其結構采用主控端/被控端的設計結構,通過對系統(tǒng)事件隊列進行Socket通信的方法傳遞事件。通過Java JDK中的Robot對象,該對象可以完成屏幕圖像截取操作,控制鼠標、鍵盤,如此便可以輕而易舉地實現(xiàn)遠程計算機的控制。
遠程控制系統(tǒng)JPCAnyWhere通過在主控端輸入被控端的IP地址進行連接識別,在被控端通過Robot截取桌面圖像,通過Socket通信傳給主控端,同時應用Java多線程的控制方法傳送、接受圖像和各種事件。JPCAnyWhere的設計與實現(xiàn)中存在一些問題。例如在被控端主機上播放視頻時,在主控端傳輸過來的圖像無法顯示視頻信息;JPCAnyWhere支持的功能不是很豐富等。這些問題的出現(xiàn),使JPCAnyWhere的應用范圍受到限制。在下一階段的研究中,對課題的改進主要包括兩個方面,分別是對JPCAnyWhere功能的擴充,以及解決在實現(xiàn)過程中遇到的一些關鍵問題,包括視頻圖像的截取和傳輸問題等等。