【正文】
那么到目前為止,一個(gè)基于 Java 語言開發(fā)的遠(yuǎn)程控制程序的雛形就展現(xiàn)在我們面前了,試想,如果我們能遠(yuǎn)程調(diào)用 CMD 命令已經(jīng)相當(dāng)于無所不能了。 部分計(jì)算機(jī)網(wǎng)絡(luò)的書籍對套接字有這樣的定義為端口 +IP 地址;一個(gè)套接字是由一個(gè)由一個(gè) IP 地址和一個(gè)端口組成的,在網(wǎng)絡(luò)通信中的底層實(shí)現(xiàn)也的確如此,要建立進(jìn)程之間的通信就必須使用一個(gè)未被占用的端口進(jìn)行等待連接,在連接端口之后才能在該端口上通信,以實(shí)現(xiàn)進(jìn)程間的通信。 多線程是為了同步完成多項(xiàng)任務(wù),不是為了提高運(yùn)行效率,而是為了提高資源使用效率來提高系統(tǒng)的效率。從程序設(shè)計(jì)語言的角度看,多線程操作最有價(jià)值的特性之一就是程序員不必關(guān)心到底使用了多少個(gè)處理器。許多程序設(shè)計(jì)問題都要求程序能夠同步的處理工作,即工作能同時(shí)進(jìn)行,而不是等待一個(gè)方法執(zhí)行完后再接著執(zhí)行主進(jìn)程。適 合于一次傳輸小量數(shù)據(jù),可靠性則由應(yīng)用層來負(fù)責(zé)。 (3) 網(wǎng)際控制消息協(xié)議 ICMP:發(fā)送消息,并報(bào)告有關(guān)數(shù)據(jù)包的傳送錯(cuò)誤。同時(shí),為了盡快地發(fā)送分組,可能需要沿不同的路徑同時(shí)進(jìn)行分組傳遞。對應(yīng)的優(yōu)點(diǎn)就是客戶端響應(yīng)速度快。 用 C/S 模式設(shè)計(jì)本系統(tǒng)的優(yōu)勢在于: (1) 應(yīng)用服務(wù)器運(yùn)行數(shù)據(jù)負(fù)荷較輕。 如果此套接字有一個(gè)與之關(guān)聯(lián)的通道,則關(guān)閉該通道。 mousePress(int buttons)方法:按下一個(gè)或多個(gè)鼠標(biāo)按鈕。 (6) 類 使用該類提供的一系列方法可以模擬鼠標(biāo)、鍵盤操作事件以及屏幕截圖,達(dá)到遠(yuǎn)程監(jiān)控的目的。 exists()方法:測試此抽象路徑名表示的文件或目錄是否存在。如果因?yàn)橐呀?jīng)到達(dá)流末尾而沒有可用的字節(jié),則返回值 1。主要用于遠(yuǎn)程 圖像的傳輸。它基于請求執(zhí)行某些操作,然后可能向請求者返回結(jié)果。當(dāng)然,如果為非常復(fù)雜的網(wǎng)絡(luò)(如Inter)編寫通信應(yīng)用程序,就應(yīng)該考慮到數(shù)據(jù)報(bào)套接字的不可靠性。除此之外,在數(shù)據(jù)進(jìn)行傳輸時(shí),如果一端的連接斷開,則另一端的應(yīng)用 程序會接到通知。即客戶端向服務(wù)端發(fā)出請求,服務(wù)端接收待來自客戶端的請求好,調(diào)用相應(yīng)的服務(wù)。 xxx 學(xué)院本科生畢業(yè)論文 (設(shè)計(jì) ) 7 面向連接服務(wù)是電話系統(tǒng)服務(wù)模式的抽象,即每一次完整的數(shù)據(jù)傳輸都要經(jīng)過建立、連接、數(shù) 據(jù)傳輸及終止連接的過程。 在網(wǎng)絡(luò)的分層模型中,各層嚴(yán)格遵循著單向依賴,各層之間分工明確,但又相互協(xié)作,他們之間的協(xié)作主要體現(xiàn)在各相鄰層邊緣的應(yīng)用上。應(yīng)用程序在網(wǎng)絡(luò)上傳輸,接收的信息都通過這個(gè)套接口來實(shí)現(xiàn)。 Socket 20世紀(jì) 80年代初,美國政府的高級研究工程機(jī)構(gòu) (ARPA)給加利福尼亞大學(xué) Berkeley分校提供資金,讓他們在 UNIX操作系統(tǒng)下實(shí)現(xiàn) TCP/IP協(xié)議。這與微軟公司所倡導(dǎo)的注重精英和封閉式的模式完全不同。在 Java SE 版本中, Java 又引入了泛型編程( Generic Programming)、類型安全的枚舉、不定長參數(shù)和自動裝 /拆箱等語言特性。 系統(tǒng)的開發(fā)平臺 Eclipse 介紹 本軟件實(shí)用的主要開發(fā)工具之一 Eclipse 是一個(gè)開放源代碼的、基于 Java的可擴(kuò)展開發(fā)平臺。 使用 Socket網(wǎng)絡(luò)編程 技術(shù)及 Java程序開發(fā)語言。 本軟件就是基于此而設(shè)計(jì)開發(fā)的,能實(shí)現(xiàn)以下的基本的遠(yuǎn)程功能: (1) 查看被控制端的文件目錄清單,即遠(yuǎn)程資源管理器; (2) 拷貝被控制端的文件到控制端,同時(shí)也能上傳文件到被控端,或刪除被控端文件; (3) 強(qiáng)迫被控制端重新啟動或關(guān)機(jī); (4) 直接執(zhí)行任何可執(zhí)行命令,打開應(yīng)用程序; (5) 控制被控制端的屏幕,在本地直接操作被控制端計(jì)算機(jī); 而且做了 一些必要的安全性考慮。 對于現(xiàn)如今流行的遠(yuǎn)程控制軟件,一般分兩個(gè)部分:客戶端 Client,和服務(wù)器端Server。面對眾多的部門聯(lián)網(wǎng)計(jì)算機(jī),對于人數(shù)相對偏少的網(wǎng)絡(luò)管理員來說,如果每臺計(jì)算機(jī)都需要親臨維護(hù)既浪費(fèi)時(shí)間,工作效率也極低,因此他們希望對整個(gè)網(wǎng)絡(luò)上的計(jì)算機(jī)能實(shí)現(xiàn)遠(yuǎn)程控制操作;也希望能實(shí)現(xiàn)遠(yuǎn)程傳輸文件操作;同時(shí)還能查看實(shí)時(shí)的計(jì)算機(jī)運(yùn)行狀態(tài)和進(jìn)行一些相關(guān)操作;希望能夠傳輸文件;希望能夠防止病毒的蔓延、非法程 序的拷貝、杜絕某些用戶的越權(quán)或非法操作等。本系統(tǒng)從設(shè)計(jì)最初到具體實(shí)現(xiàn)、優(yōu)化、測試都嚴(yán)格遵循軟件工程的思想。 計(jì)算機(jī)遠(yuǎn)程控制技術(shù)是計(jì)算機(jī)系統(tǒng)管理人員在異地通過計(jì)算機(jī)網(wǎng)絡(luò)連接目標(biāo)計(jì)算機(jī) , 由本地計(jì)算機(jī)對遠(yuǎn)程計(jì)算機(jī)進(jìn)行管理和維護(hù)的行為 。s attention. Computer remote control technology is a puter system management personnel in different through the puter work connection target puter, the local puter to the remote puter management and maintenance of behavior. Based on JAVA and Socket programming technology in bination with C/S remote monitoring system software broke through the limitation of space, users need not personally to the target location, directly through the work can achieve for the controlled machine monitoring, and have a friendly operation interface. This system uses Java work programming and Java graphical programming realization. This system in the development process, the puter work technology and remote control theory foundation bined. 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 mand, 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。但如今,隨著網(wǎng)絡(luò)的飛速發(fā)展,隨著人們對電腦的管理及技術(shù)支持的需要的不斷提高,遠(yuǎn)程操作及控制技術(shù)越來越引起人們的關(guān)注。 上面主要表述的一般是一對一的基于遠(yuǎn)程服務(wù)的遠(yuǎn)程控制實(shí)現(xiàn)原理,其實(shí),如今最實(shí)用的遠(yuǎn)程控制軟件最理想的模式應(yīng)該是一對多,即一臺控制機(jī) 可以控制多臺電腦。目前比較出名的遠(yuǎn)程控制軟件例如 PeerYou, VCN, Oray等都具有高效的信息交互和傳輸能力,以及實(shí)現(xiàn)跨平臺的高效遠(yuǎn)程控制。 要求: (1) 基于 C/S模式架構(gòu); (2) 實(shí)現(xiàn)截屏、執(zhí)行遠(yuǎn)程 CMD命令,遠(yuǎn)程關(guān)機(jī)等功能; (3) 軟件安全、穩(wěn)定、可靠; (4) 至少能在兩臺計(jì)算機(jī)之間進(jìn)行控制演示; (5) 界面簡潔友好。用來解決家用電器的控制和通訊問題,如電視機(jī)、電話、鬧鐘、烤面包機(jī)等。不過,每次的編譯執(zhí)行需要消耗一定的時(shí)間,這同時(shí)也在一定程度上降低了 Java 程序的運(yùn)行效率。這樣的平臺目前非常流行,因此微軟公司推出了與之競爭的 .NET平臺以及模仿 Java 的 C語言。今天,Socket接口是 TCP/IP網(wǎng)絡(luò)最通用的 API,也是在 Inter上進(jìn)行應(yīng)用開發(fā)最為通用的API。 進(jìn)程間通信的最初概念來源于單機(jī)系統(tǒng)。服務(wù)的表 現(xiàn)形式是原語( Primitive),如系統(tǒng)調(diào)用或庫函數(shù)等。其中 TCP協(xié)議就提供面向連接的可靠通信協(xié)議。 (1) 原始套接字 該接口允許對較低層協(xié)議,如 IP, ICMP的直接訪問。在這里的“不可靠”是指發(fā)送的數(shù)據(jù)不能得到保障,也不保障數(shù)據(jù)按原來發(fā)出時(shí)的順序到達(dá)目標(biāo)端。另外,數(shù)據(jù)報(bào)套接字還提供向多個(gè)目的地發(fā)送廣播數(shù)據(jù)包的能力。此方法在連接傳 入之前一直阻塞。 write(RenderedImage im, String formatName, ImageOutputStream output)方法:使用支持給定格式的任意 ImageWriter 將一個(gè)圖像寫 入 ImageOutputStream。 (4) . File 類 主要用于文件或目錄的操作。 list()方法:返回一個(gè)字符串?dāng)?shù)組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。 mouseMove(int x, int y)方法:將鼠標(biāo)指針移動到給定屏幕坐標(biāo)。 以上為數(shù)據(jù)交互使用到的 Java 類, Java 很好的封裝了這些操作,使得程序 的設(shè)計(jì)簡單又結(jié)構(gòu)性強(qiáng),更好的體現(xiàn)了 Java 的面向?qū)ο筇匦?。目前大多?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)用不同的模塊共享邏輯組件;但兩種應(yīng)用都有著自己的優(yōu)勢,怎么使用取舍取決于對業(yè)務(wù)的需求。運(yùn)行服務(wù)端的xxxx 計(jì)算機(jī)遠(yuǎn)程控制軟件的設(shè)計(jì)與開發(fā) 12 機(jī)器,也稱為應(yīng)用服務(wù)器。網(wǎng)絡(luò)接口層將幀放在網(wǎng)上,或從網(wǎng)上把幀取下來。 網(wǎng)絡(luò)互連層除 了需要完成路由的功能外,也可以完成將不同類型的網(wǎng)絡(luò)(異構(gòu)網(wǎng))互連的任務(wù)。傳輸協(xié)議的選擇根據(jù)數(shù)據(jù)傳輸方式而定。其中,有基于 TCP 協(xié)議的,如文件傳輸協(xié)議( File Transfer Protocol, FTP)、虛擬終端協(xié)議( TELNET)、超文本鏈接協(xié)議( Hyper Text Transfer Protocol, HTTP),也有基于 UDP 協(xié)議的。盡管這個(gè)方法很有用,但這樣的程序很難移植,由此造成了另一類的代價(jià)高昂問題。其實(shí)不然,實(shí)用多線程必須解決一個(gè)重要的問題:資源共享。 (2) 程序的運(yùn)行速度可能加快。 既然我們已經(jīng)能通過 Socket 進(jìn)行網(wǎng)間進(jìn)程通訊,進(jìn)行數(shù)據(jù)傳輸,那么,往更深一層去想,如果是傳輸命令讓計(jì)算機(jī)做出響應(yīng)呢?因此,實(shí)現(xiàn)這一假設(shè)的過程,即為遠(yuǎn)程控制軟件設(shè)計(jì)的基礎(chǔ)思想。主要用于發(fā)送相應(yīng)命令以及處理相應(yīng)返回信息,具體流程如下圖所示: 圖 客戶端流程 The client processes 文件操作 文件操作包含客戶端的上傳文件( SendFile)、下載文件( DownFile),文件一般操作( FileControl)以及初始化被控端磁盤( getIniDrivers)。 cc1[i] = new JButton(new ImageIcon( src\\client\\imges\\))。 } 其中 drivers[i]就是調(diào)用初始化磁盤方法返回的字符數(shù)組。 ()。 i++) { String[] temp = s[i + 1].trim().split(,)。 public boolean deleteFile(String opera)方法根據(jù)地址刪除服務(wù)端相應(yīng)文件,部分代碼如下: OutputStream os。 os = ()。 return false。 最后一行 new DownFile(socket, download, ).start()。+opera)。 if (info != null amp。部分代碼為: socket = new Socket((), )。 ()。 (().getBytes())。 xxx 學(xué)院本科生畢業(yè)論文 (設(shè)計(jì) ) 25 int y = (int) () + (int) ().getValue()。 SendOperate sender=new SendOperate(, (operateStr))。部分代碼如下: if ((null, 您確定要關(guān)閉遠(yuǎn)程控制端計(jì)算機(jī)? , 提醒 , ) == 0) { (cmd。 ()。遠(yuǎn)程控制軟件的具體業(yè)務(wù)邏輯都是在被控制端實(shí)現(xiàn)的,主控端只負(fù)責(zé)傳送要執(zhí)行的命令和顯示返回的結(jié)果。 for (int i = 0。 (() + delpath + , + () + 刪除完成! + ,)。)。 return false。 } else if (!()) { (文 件 ,)。 基本響應(yīng)的方法有: if (tj.equals(s[0]) amp。am