【摘 要】本文主要是軟件監(jiān)控設計,以C/S架構(gòu)并以eclipse作為開發(fā)工具,采用Java開發(fā)語言編寫程序,在Windows平臺下實現(xiàn)的一種機房監(jiān)控系統(tǒng)。過程中需要實現(xiàn)的有:獲取被控端屏幕畫面并且控制鼠標鍵盤的操作,通過點擊控制端按鈕可以進行被控制端的屏幕截圖、鎖定屏幕、強制關(guān)機以及服務器與被控端之間的通信等功能。
【關(guān)鍵詞】監(jiān)控系統(tǒng);計算機;控制屏幕
中圖分類號: TP308 文獻標識碼: A 文章編號: 2095-2457(2018)06-0125-002
0 前言
高校計算機房是學生學習知識培訓現(xiàn)代化人才的良好教學場所,但有一些學生在上課時使用教學電腦玩游戲、看電影或者進行一些其他與學習無關(guān)的行為,給上課的老師及機房的管理人員帶來很大的管理問題。因此,設計一種機房監(jiān)控系統(tǒng), 老師通過遠程操作,可以獲取被控端的桌面信息,實現(xiàn)有效的教學及機房管理勢在必行。
1 系統(tǒng)方案的確定
本系統(tǒng)主要是應用遠程監(jiān)控技術(shù)對局域網(wǎng)內(nèi)的電腦運行狀態(tài)進行監(jiān)控。通過獲取被控端計算機實時的信息,局域網(wǎng)管理者能夠在控制端查看任意一臺被控計算機的使用情況,監(jiān)控局域網(wǎng)內(nèi)部計算機的桌面并且對桌面進行保存,實現(xiàn)對局域網(wǎng)內(nèi)所操作計算機的管理。
系統(tǒng)的功能需求如下:
(1)實時監(jiān)控:當控制端鏈接到被控制端時,能隨時查看被控端的計算機畫面,控制端可以實時監(jiān)視被控制端的計算機,并且可以對其進行各種行為進行控制操作,能隨時截取屏幕圖片并自動保存,就像操作自己計算機一樣簡單地操作學生計算機。
(2)遠程控制:控制端和被控制端連接后可在控制端的用戶界面中單擊按鈕用以控制被控制端的計算機進行遠程關(guān)機,能隨時鎖定并且解鎖用戶對計算機的操作。“鎖定”計算機是使學生無法對計算機進行操作,使電腦短暫“失靈”。解鎖就是恢復計算機的正常操作。
(3)為使用方便,要求程序界面友好,安裝及維護簡易可行。
(4)能同時支持多個被控端,及一臺服務器能夠管理多個被控端。
2 系統(tǒng)功能模塊的設計
本系統(tǒng)用例主要分為兩個部分,分別為被控端用戶和控制端管理員
被控端用戶:被控端用戶只能被動的等待控制端傳遞消息過來,被控端用戶所能做的僅僅是將被控端啟動,后面的操作全部由控制端管理員進行??刂贫巳藛T可以對被控端實行截圖、屏幕控制、鎖屏、解鎖、觀察被控端界面、發(fā)送信息及關(guān)機等操作
控制端管理員輸入被控制端IP后可以對被控端進行界面的觀察、屏幕上各種事件的控制、被控端的屏幕截圖并保存和控制被控端的鎖屏、解鎖功能。
2.1 系統(tǒng)架構(gòu)設計
該系統(tǒng)是一種典型的C/S系統(tǒng),其架構(gòu)圖如圖2-1所示:
在該系統(tǒng)中,管理員通過一臺服務器,對多個被控端進行控制。而這些控制的實現(xiàn),都是通過向被控端發(fā)送消息請求來完成的,接下來介紹一下這些控制協(xié)議。
(1)鎖定并且解鎖。控制端向被控端發(fā)送鎖屏指令,被控端將嘗試進行鎖屏,如果成功,將向服務器返回OK,否則返回NO;控制端向被控端發(fā)送鎖屏指令,被控端將嘗試進行鎖屏,如果成功,將向服務器返回OK,否則返回NO。
(2)發(fā)送消息??刂贫送ㄟ^發(fā)送命令向被控端發(fā)送消息。消息的具體內(nèi)容作為參數(shù)傳遞給被控端,被控端收到后返回OK給控制端,否則返回NO。
(3)屏幕截圖。控制端直接通過截取軟件截圖來獲取截圖,不經(jīng)過被控端。
被控端開始運行后,控制端輸入被控端IP后,一邊開始運行監(jiān)控,一邊接收管理員的管理操作。比如針對某個IP的電腦進行截圖等。當用戶選擇終止程序時退出。被控端在運行后會不斷監(jiān)聽來自控制端的消息,并對消息進行相應處理,然后返回結(jié)果到控制端。
2.2 用戶界面的實現(xiàn)
控制端先創(chuàng)建一個輸入ip界面,在此界面中輸入ip并且驗證成功后即跳轉(zhuǎn)到控制端操作界面,輸入被控端ip以用來連接控制端與被控制端,此界面的實現(xiàn)主要用了JFrame中的類文本框類JTextFiled,并且用了參數(shù)調(diào)用的方式傳遞ip給主程序,如果輸入正確ip,即會自動跳轉(zhuǎn)到控制端界面,如果輸入錯誤ip系統(tǒng)會報鏈接錯誤。需要重新運行程序才能再次輸入ip。
輸入被控端IP地址輸入后控制端界面如圖2-2所示,本界面主要使用了JScrollpane類來承載桌面圖片,另外還使用了JButton、JPanel等JAVA swing中的技術(shù),在本界面中控制端管理員可以進行截圖、鎖屏、關(guān)機、輸入文本和控制并查看被控端界面等操作。
被控端運行后沒有任何界面出現(xiàn),但與控制端鏈接后,通過控制端傳遞過來的命令進行反應??刂贫藗鱽礞i屏命令會出現(xiàn)屏幕已鎖定界面,該界面是置頂界面,只有通過控制端傳來解鎖命令才會取消該界面。當控制端輸入文本并發(fā)送后,在被控制端這邊便會顯示文本發(fā)送界面,界面中會顯示控制端所輸入的內(nèi)容,控制端刷新所輸入內(nèi)容后該界面自動刷新。被控端接收關(guān)機消息后會在60S后自動關(guān)機。
3 核心算法的實現(xiàn)
3.1 控制端與被控端之間的通信
public class ClientMain extends Thread{
public static void main(String[] args) {
Socket s;
s = new Socket(“127.0.0.1”,5921);
new UI(s);
}
}
public class ServerMain {
static ServerSocket ss;
public static void main(String[] args) {
ss = new ServerSocket(5921);
while (true)
{
Socket s = ss.accept();
}
}
}
3.2 屏幕截圖
屏幕截圖主要是通過截取當前在被控端獲取的圖片,通過BufferedImage和ImageIO.write來實現(xiàn)屏幕的截取并且保存。
public void screenshots(BufferedImage picture){}
ImageIO.write(imag, "JPEG",new File("d:/picture.jpg") );
3.3 鎖屏
鎖屏主要是用Swing編寫一種JFrme并置頂且不能強行關(guān)閉,只能通過控制端發(fā)送解鎖信息來關(guān)閉鎖屏界面。
JFrame f=new JFrame("");
if(obj != null && obj instanceof Boolean && obj!=a)
{
a=(Boolean)obj;
f.setAlwaysOnTop(true);
f.setUndecorated(true);
f.setLayout(null);
f.setBounds(0, 0, 2000, 2000);
f.setVisible(a);
}
3.4 獲取并且控制被控端屏幕
將鼠標及鍵盤時間存入流中發(fā)送給被控端,在被控端中建立時間相應,進行對應時間操作。
out = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream in = new ObjectInputStream(s.getInputStream());
private void handleEvent(InputEvent event) {
MouseEvent mevent = null; // 鼠標事件
MouseWheelEvent mwevent = null;// 鼠標滾動事件
KeyEvent kevent = null; // 鍵盤事件
int mousebuttonmask = -100; // 鼠標按鍵
4 總結(jié)
局域網(wǎng)監(jiān)控系統(tǒng)是機房中不可或缺的一部分,一個簡潔易用的局域網(wǎng)監(jiān)控系統(tǒng)不僅可以減輕管理員的工作負擔,還可以使用戶對機房中電腦的使用效率有所提高。本次設計主要以軟件形式實現(xiàn)了獲取被控端屏幕畫面并且控制鼠標鍵盤的操作,管理員通過點擊控制端按鈕可以對被控端電腦的控制,從而提高機房使用率,凈化上網(wǎng)的環(huán)境,杜絕某些學生用戶在機房內(nèi)使用電腦做其他違規(guī)的事情。
【參考文獻】
[1]萬加福.網(wǎng)絡監(jiān)控系統(tǒng)原理與應用[M].機械工業(yè)出版社,2009.
[2]梁篤國.網(wǎng)絡視頻監(jiān)控及應用[M].人民郵電出版社,2009.
[3]林巧民.Java程序設計教程[M].清華大學出版社,2008.
[4]Jeffrey Richer. Windows 核心編程[M].機械工業(yè)出版社,2008.
[5]夏王霞.批操作在計算機實驗室管理中的應用 [J].科技世界,2016.
[6](美)阿諾德,Ken Arnold,等. Java程序設計語言[M].人民郵電出版社,2011.
[7]FLANAGAN. Java技術(shù)手冊[M].中國電力出版社,2010.
[8]飛思科技產(chǎn)品研發(fā)中心. JAVA應用開發(fā)詳解[M].電子工業(yè)出版社,2012.
[9]耿祥義,張躍平.JAVA實用教程[M].清華大學出版社,2008.
[10]清宏計算機工作室. JAVA編程技巧[M].機械工業(yè)出版社,2010.
[11]賽奎春.JAVA工程應用與項目實踐[M].機械工業(yè)出版社,2009.
[12]FLANAGAN. Java技術(shù)手冊[M].中國電力出版社,2011.
[13]Bruce Eckel. Thinking in Java[M]. Upper Saddle River, New Jersey, USA: Prentice Hall,2010.
[14]BruceEckel. Java編程思想[M].機械工業(yè)出版社,2008.