基于Java的远程控制系统的研究
本文作者(熊海燕, 胡蓉),请您在阅读本文时尊重作者版权。
摘要:该系统采用Java网络编程实现,在开发过程中将网络技术与远程控制理论相结合,实现了以下功能:能连续获得被控端机器屏幕变化;实现被控端磁盘文件的上传、下载;实现对鼠标、键盘的模拟;远程关机、远程重启计算机。
关键词:Java;管理系统;远程控制The Research of Remote Control System Based on Java
XIONG Hai-yan1, HU Rong2
(1.The Food and Drug Administration of Jiangxi Province, NanChang 330029, China; 2.Nanchang Institute Of Technology, Nanchang 330099, China)
Abstract: The system adopts the Java network programming and graphic programming. In the process of research, the thesis united network programming and remote control theory together, which allows the system to achieve the following functions successfully: continuously obtaining the remote computer screen; uploading and downloading the document from the remote computer and the simulation of mouse and keyboard; turning off and restarting the computer.
Key words: Java; management system; remote control
1 概述
随着时代的进步,计算机在人们的生活中已经得到了普及,在生活的各个方面都可以看到计算机及网络的应用。网络技术的不断发展,也为远程控制技术的发展创造了条件。远程控制软件一般分两个部分:一部分是客户端程序Client,另一部分是服务器端程序Server,多数远程控制软件把被控端作为服务器,主控端作为客户端。考虑到在控制过程中,如果把主控端作为客户端向被控端发送TCP连接请求,容易被防火墙或者杀毒软件阻止,控制过程就不能成功进行。因此,本文将被控端设计为客户端,向主控端发送连接请求,建立连接后,主控端向被控端发送远程控制命令,控制被控端电脑中的各种应用程序运行,被控端对主控端发送来的命令进行处理,并将命令处理结果返回给主控端。远程控制软件顺应时代发展的需求,它实用、使用简便,是非常不错的软件。
远程控制是在网络上由一台电脑(主控端Remote)远距离去控制另一台电脑(被控端Host)的技术,这里的远程不是字面意思的远距离,一般指通过网络控制远端电脑,不过,大多数时候我们所说的远程控制往往指在局域网中的远程控制而言。
当操作者使用主控端电脑控制被控端电脑时,就好像坐在被控端电脑的屏幕前一样,可以启动被控端电脑的应用程序,可以使用被控端电脑的一些基本操作和命令。但是,需要弄清楚的是主控端电脑只是将键盘和鼠标的指令传送给远程电脑,同时将被控端电脑的屏幕画面通过通信线路回传过来。也就是说,我们控制被控端电脑进行操作似乎是在眼前的电脑上进行的,实质是在远程的电脑中实现的,不论打开文件,还是上网浏览、下载等都是存储在远程的被控端电脑中的。
2 系统关键技术
系统使用的关键技术就是Java网络编程和Java图形编程。用Java网络编程实现主控端和被控端的通讯(命令收发、数据传送),用Java图形编程完成主控端控制界面的编写。具体应用如下:
(1) 实现主控端(服务器)与被控端(客户端)之间的通讯。
用Java Socket来实现。
(2) 用Java采集事件,封装成消息,用于发送。
在主控端机器上采集事件(一般只不过是键盘和鼠标的事件),然后封装成消息类传输到被控端。
(3) 在被控端上重演主控端的动作事件。
在被控端运行client端,接收消息,如果主控端有请求操作的消息,用Robot截下当前屏幕,传给主控端,主控端显示被控端的屏幕,是一个位图;然后接收在这个位图上的鼠标事件和键盘事件,并把鼠标位置(位图上的坐标换算成对应的屏幕上的坐标)和键值送到被控端上,在被控端上重演同样的事件。
主控端包括的模块有:消息输入,命令处理结果显示模块,通信模块。消息输入模块负责将用户界面的事件传送到通信模块,通信模块将命令信息发送到被控端;被控端执行操作后返回的成功或失败信息交由主控端命令处理结果显示模块根据信息的格式进行显示。
被控端包括的模块有:通信模块,命令处理模块。被控端处于侦听状态,一旦接收到合法的连接请求,就开UDP端口,并开启命令接受线程,建立连接后,通过通信模块接收主控端发来的命令信息,经命令处理模块解释后,并将结果返回到主控端。
3 远程控制流程
被控端收到主控端的UDP命令:control:TCP Port,获得主控端开放的TCP端口号。成功连接主控端的TCP端口后,并从中读取事件对象,接着对事件对象进行类型判断,如果是键盘事件,就对键盘事件重演;如果是鼠标事件,就对鼠标事件重演。接着判定控制套接是否关闭,如果关闭,控制结束。否则返回继续读取事件。流程如图1所示。
4 远程屏幕控制的实现
命令处理的实现就是通过函数调用,调用各个命令处理类。在命令处理中,被控端执行以下操作:发送自己的状态信息给主控端;建立图象传送;开启控制命令套接字;文件上传;文件下载;执行DOS命令,获取执行结果和错误流。
开启屏幕监视线程:
public static void startGetScreen(ClientStatus clientstatus) throws MyException{