1、基于 JAVA C/S 远程监控系统软件的实现摘 要近年来,网络技术的不断发展,为远程监控技术的发展创造了条件。远程监控系统软件越来越受到人们的重视,其实用性也毋庸质疑。基于 JAVA C/S远程监控系统软件突破了空间的限制,使用者不用亲临,在自己的电脑面前就能轻松的实现对被监控端机器的监控。本系统采用 Java 网络编程和 Java 图形编程实现。笔者在开发过程中将网络技术与远程监控理论基础相结合,实现了以下功能:能连续获得被监控端机器屏幕变化;实现被监控端硬盘文件的上传、下载;实现对鼠标、键盘的模拟;实现在远程机器上执行任意 DOS 命令;远程关机、远程重启计算机,方便了用户监视和操作被监
2、控端机器。本系统从系统需求分析、概要设计、详细设计到具体的编码实现和后期的代码优化、功能测试都严格遵循了软件工程的思想。关键词:远程监控;Java Robot;屏幕截取;Java SocketThe Implementation of the Remote Control System Software Based on Java Technology and the C/S ModeAbstractIn recent years, the continuous development of the Internet technology provides remote control tec
3、hnology with condition for its development. Without any suspicion to its practicability, people pay more and more attention to remote control Technology system software. Remote control technology system software based on Java technology and the c/s mode, breaks the restriction of space. The system a
4、dopts network programming and graphic programming with java, and the users controlling the remote computer easily. In the process of research, the author united network programming and remote control theory together, which allows the system to successfully achieve the following functions: continuous
5、ly obtaining the remote computer screen; uploading and downloading the document from the remote computer and the simulation of mouse and keyboard; controlling the remote machines to execute any DOS commands; turning off and restarting the computer. From the system requirements analyses, general desi
6、gn, coding and the code optimization, function testing, the remote control technology system strictly keeps to the ideas of software engineering.Key words: Remote Control Technology; Java Robot; Screen Capture; Java Socket目 录论文总页数:21 页1 引 言 .11.1 远程监控的背景知识 .11 2 远程监控软件的原理 .22 系统需求分析及理论基础 .32.1 系统需求分
7、析 .32.1.1 系统功能需求 .32.1.2 其他需求 .32.2 系统开发原理及关键技术 .32.2.1 系统开发原理 .32.2.2 系统运行概述 .32.2.3 系统的关键技术 .32.3 系统的开发平台 .42.3.1 Eclipse 介绍 .42.3.2 Java 语言 .42.3.3 Jar 命令 .42.4 编程运行环境 .63 远程监控系统系统设计 .63.1 系统总体结构设计和分析 .63.1.1 主控端的主要功能模块 .73.1.2 被监控端的主要功能模块 .73.2 程序流程及分析 .73.2.1 被监控端启动流程 .73.2.2 主控端启动流程 .73.2.3 命令
8、接收和处理流程 .93.2.4 图形监视线程启动流程 .93.2.5 远程控制流程 .93.2.6 文件上传流程 .104 系统主要模块设计和具体功能实现 .114.1 系统主要模块设计 .114.1.1 消息输入,命令处理结果显示模块 .114.1.2 通信模块实现 .114.1.3 命令处理模块 .124.2 连续获得被监控端机器屏幕变化功能实现 .124.2.1 比较几种屏幕截取方法 .124.2.2 Java“屏幕照相机”的编写原理 .124.2.3 Java“屏幕照相机”的实现 .124.2.4 远程屏幕监控的实现 .134.2.5 屏幕监视功能测试 .155 系统运行及测试结果 .
9、155.1 测试方法 .155.2 测试环境 .165 3 系统运行实例 .165.3.1 连续获得被监控端机器屏幕变化功能 .165.3.2 实现被监控端硬盘文件的上传、下载 .165.3.3 实现对鼠标、键盘的模拟 .175.3.4 实现在被监控端机器上执行任意 DOS 命令 .185.3.5 远程关机、远程重启计算机 .18结 论 .19参考文献 .19致 谢 .20声 明 .21第 1 页,共 21 页1 引 言近年来,随着计算机及网络的应用普及,千千万万的人们在娱乐、通讯、学习、工作等各方面都实现了前所未有的信息化,极大地提高了生活质量与工作效率。然而在这种种便利背后,你关注的人在做
10、什么呢?比如:公司员工。因此,远程监控发挥作用了。这里以公司领导为例,远程监控系统软件方便了公司领导人管理公司员工。在一个企业中,作为公司领导人,一定很担心自己的员工利用上班时间做工作以外的其他事情,也很担心他们泄露公司机密,等等。有了远程监控,这样的担心就很容易解决,你不用亲临监督每个员工,在自己电脑面前就能对他们的一举一动了如指掌。远程监控技术,始于 DOS 时代,因为当时网络不发达,这门技术没有得到很多重视,但是随着网络的高度发展,电脑的管理及技术支持的需要,远程监控技术越来越引起人们的关注。网络技术的不断发展,也为远程监控技术的发展创造了条件。远程监控软件一般分两个部分:一部分是客户端
11、程序 Client,另一部分是服务器端程序Server,多数远程监控软件把被监控端作为服务器,主控端作为客户端。考虑到在监控过程中,如果把主控端作为客户端向被监控端发送 TCP 连接请求,容易被防火墙或者杀毒软件阻止,监控过程就不能够成功进行。因此,本毕业设计将被监控端设计为客户端,向主控端发连接请求,建立连接后,主控端向被监控端发送远程控制命令,控制被监控端电脑中的各种应用程序运行,被监控端对主控端发送来的命令进行处理,并将命令处理结果返回给主控端。远程监控软件顺应时代发展的需求,它实用、使用简便,是非常不错的软件。1.1 远程监控的背景知识远程监控是在网络上由一台电脑(主控端 Remote
12、)远距离去监控另一台电脑(被监控端 Host)的技术,这里的远程不是字面意思的远距离,一般指通过网络监控远端电脑,不过,大多数时候我们所说的远程监控往往指在局域网中的远程监控而言。当操作者使用主控端电脑监控被监控端电脑时,就如同坐在被监控端电脑的屏幕前一样,可以启动被监控端电脑的应用程序,可以使用被监控端电脑的文件资料,不过,有一个概念需要明确,那就是主控端电脑只是将键盘和鼠标的指令传送给远程电脑,同时将被监控端电脑的屏幕画面通过通信线路回传过来。也就是说,我们控制被监控端电脑进行操作似乎是在眼前的电脑上进行的,实质是在远程的电脑中实现的,不论打开文件,还是上网浏览、下载等都是存储在远程的被监
13、控端电脑中的。第 2 页,共 21 页电脑中的远程控制技术,始于 DOS 时代,只不过当时由于技术上没有什么大的变化,网络不发达,市场没有更高的要求,所以远程控制技术没有引起更多人的注意。但是,随着网络的高度发展,电脑的管理及技术支持的需要,远程操作及控制技术越来越引起人们的关注。远程控制一般支持下面的这些网络方式:LAN、WAN、拨号方式、互联网方式。此外,有的远程控制软件还支持通过串口、并口、红外端口来对远程机进行控制(不过,这里说的远程电脑,只能是有限距离范围内的电脑了)。传统的远程控制软件一般使用 NETBEUI、NETBIOS、IPX/SPX、TCP/IP 等协议来实现远程控制,不过
14、,随着网络技术的发展,目前很多远程控制软件提供通过 Web 页面以 Java 技术来控制远程电脑,这样可以实现不同操作系统下的远程控制,例如数技通科技有限公司在就推出了全球第一套基于中文 JAVA 的跨平台远程控制软件易控。1 2 远程监控软件的原理远程监控软件一般分两个部分:一部分是客户端程序 Client,另一部分是服务器端程序 Server,由于本毕业设计的通信模块有别于传统的远程监控软件,在使用前需要将客户端程序安装到被监控端电脑上,将服务器端程序安装到主控端电脑上。它的控制的过程是先在被监控端电脑上执行客户端程序,像一个普通的客户一样向主控端电脑中的服务器端程序发出信号,建立一个特殊
15、的远程服务,然后通过这个远程服务,接收主控端发送过来的远程控制命令,并对命令进行处理,最后将命令处理结果返回给主控端,我们称这种远程控制方式为基于远程服务的远程控制。通过远程监控软件,我们可以进行很多方面的远程控制,包括获取目标电脑屏幕图像、窗口及进程列表;记录并提取远端键盘事件(击键序列,即监视远端键盘输入的内容);可以打开、关闭目标电脑的任意目录并实现资源共享;提取拨号网络及普通程序的密码;激活、中止远端程序进程;管理远端电脑的文件和文件夹;关闭或者重新启动远端电脑中的操作系统;修改Windows 注册表;通过远端电脑上、下载文件和捕获音频、视频信号等。前面我们所说的是一台电脑对一台电脑的
16、情况,其实,基于远程服务的远程控制最适合的模式是一对多,即利用远程监控软件,我们可以使用一台电脑监控多台电脑,这就使得我们不必为办公室的每一台电脑都安装一个调制解调器,而只需要利用办公室局域网的优势就可以轻松实现远程多点控制了。在进行一台电脑对多台远端电脑进行控制时,我们发现,远程监控软件似乎更像一个局域网的网络管理员,而提供远程控制的远程终端服务就像极了办公室局域网的延伸。这种一对多的连接方式在节省了调制解调器的同时,还使第 3 页,共 21 页得网络的接入更加安全可靠,网络管理员也更易于管理局域网上的每一台电脑。本文所论述的远程监控系统就是依照这种方式进行的。2 系统需求分析及理论基础2.
17、1 系统需求分析2.1.1 系统功能需求1连续获得被控端机器屏幕变化。2实现被控端硬盘文件的上传、下载。3实现对鼠标、键盘的模拟。4实现在被控端机器上执行任意 DOS 命令。5远程关机、远程重启计算机。2.1.2 其他需求1系统实用,界面操作简便。2被监控端自动隐藏运行。被监控端将随电脑启动而自动运行,运行时默认无任何可见界面。2.2 系统开发原理及关键技术2.2.1 系统开发原理本系统是利用类 java.awt.robot 中的屏幕截取和鼠标、键盘自动控制功能,然后加上网络传输功能来完成来完成截屏和远程控制的。2.2.2 系统运行概述1启动被监控端,打开指定的 UDP 端口号。用于读取命令。
18、2被监控端读取命令(命令格式为 ordername:port)ordername 为命令名字,port 为主控端打开的 TCP 端口。3接到主控端连接后,被监控端就对当前用户的桌面采用屏幕截取,然后发送给主控端。依被监控端设计的不同,可以设定屏幕截取的时间间隔,时间间隔短一点就可以获得连续屏幕变化了。4主控端在画布上对鼠标、键盘事件进行监听,被监控端重演主控端上的事件5主控端和被监控端读取和发送数据,分别来实现文件上传和下载。6在被监控端实现 DOS 命令的执行。2.2.3 系统的关键技术系统使用的关键技术就是 Java 网络编程和 Java 图形编程。用 Java 网络编程实现主控端和被监控
19、端的通讯(命令收发、数据传送) ,用 Java 图形编程完第 4 页,共 21 页成主控端控制界面的编写。具体应用如下:1实现主控端(服务器)与被监控端(客户端)之间的通讯。用 Java Socket 来实现。2用 Java 采集事件,封装成消息,用于发送。在主控端机器上采集事件(一般只不过是键盘和鼠标的事件),然后封装成消息类传输到被监控端。3在被监控端上重演主控端的动作事件。在被监控端运行 client 端,接收消息,如果主控端有请求操作的消息,用 Robot 截下当前屏幕,传给主控端,主控端显示被监控端的屏幕,是一个位图;然后接收在这个位图上的鼠标事件和键盘事件,并把鼠标位置(位图上的坐
20、标换算成对应的屏幕上的坐标)和键值送到被监控端上,在被监控端上重演同样的事件。2.3 系统的开发平台JDK1.5.0,Eclipse3.1,Windows XP Professional2.3.1 Eclipse 介绍Eclipse 是一种可扩展的开放源代码 IDE。2001 年 11 月,IBM 公司捐出价值 4,000 万美元的源代码组建了 Eclipse 联盟,并由该联盟负责这种工具的后续开发。集成开发环境(IDE)经常将其应用范围限定在“开发、构建和调试”的周期之中。为了帮助集成开发环境 (IDE)克服目前的局限性,业界厂商合作创建了 Eclipse 平台。Eclipse 允许在同一
21、IDE 中集成来自不同供应商的工具,并实现了工具之间的互操作性,从而显著改变了项目工作流程,使开发者可以专注在实际的嵌入式目标上。Eclipse 为工具开发商提供了更好的灵活性,使他们能更好地控制自己的软件技术。Eclipse 是一个开放源代码的项目,任何人都可以下载 Eclipse 的源代码,并且在此基础上开发自己的功能插件。同时可以通过开发新的插件扩展现有插件的功能,比如在现有的 Java 开发环境中加入 Tomcat 服务器插件。可以无限扩展,而且有着统一的外观,操作和系统资源管理,这也正是 Eclipse 的潜力所在。2.3.2 Java 语言Java 语言是 SUN 公司于 1995
22、 年 5 月推出的新一代面向对象的计算机通用编程语言,是继 WWW 之后又一引起世界轰动的产品。Java 语言的特点是跨平台和强大的网络编程功能。在 Java 语言诞生之前,Internet 已存在,所以 Java语言本身就封装了大量进行网络编程的类库,使得网络编程功能强大,同时又简化了网络编程的操作。因此利用 Java 语言可以开发出功能强大的网络应用程序。第 5 页,共 21 页2.3.3 Jar 命令功能:Java 归档工具语法:jar 命令选项 manifest destination input-file input-files jar 工具是个 java 应用程序,可将多个文件合并
23、为单个 JAR 归档文件。jar 是个多用途的存档及压缩工具,它基于 ZIP 和 ZLIB 压缩格式。然而,设计jar 的主要目的是便于将 java applet 或应用程序打包成单个归档文件。将applet 或应用程序的组件(.class 文件、图像和声音)合并成单个归档文件时,可以用 java 代理(如浏览器)在一次 HTTP 事务处理过程中对它们进行下载,而不是对每个组件都要求一个新连接。这大大缩短了下载时间。jar 还能压缩文件,从而进一步提高了下载速度。此外,它允许 applet 的作者对文件中的各个项进行签名,因而可认证其来源。jar 工具的语法基本上与 tar 命令的语法相同。命
24、令选项:-c:在标准输出上创建新归档或空归档。-t:在标准输出上列出内容表。 -xfile:从标准输入提取所有文件,或只提取指定的文件。如果省略了file,则提取所有文件;否则只提取指定文件。 -f:第二个参数指定要处理的 jar 文件。在-c(创建)情形中,第二个参数指的是要创建的 jar 文件的名称(不是在标准输出上)。在-t(表(或-x(抽取)这两种情形中,第二个参数指定要列出或抽取的 jar 文件。-v:在标准错误输出设备上生成长格式的输出结果。 -m:包括指定的现有清单文件中的清单信息。用法举例:“jar cmf myManifestFile myJarFile *.class”-0
25、:只储存,不进行 ZIP 压缩。 -M:不创建项目的清单文件。 -u:通过添加文件或更改清单来更新现有的 JAR 文件。例如:“jar -uf foo.jar foo.class”将文件 foo.class 添加到现有的 JAR 文件 foo.jar 中,而“jar umf manifest foo.jar”则用 manifest 中的信息更新 foo.jar 的清单。-C:在执行 jar 命令期间更改目录。例如: “jar -uf foo.jar -C classes *”将 classes 目录内的所有文件加到 foo.jar 中,但不添加类目录本身。程序示例 第 6 页,共 21 页1:
26、将当前目录下所有 CLASS 文件打包成新的 JAR 文件:jar cf file.jar *.class 2:显示一个 JAR 文件中的文件列表:jar tf file.jar 3:将当前目录下的所有文件增加到一个已经存在的 JAR 文件中:jar cvf file.jar * 2.4 编程运行环境硬件环境:CPU: 闪龙 2400内存:256M硬盘:80G软件环境:操作系统:Windows XP Professional应用软件:Eclipse3.1 + JDK1.5.0 3 远程监控系统系统设计3.1 系统总体结构设计和分析本系统设计的方案为 C/S 模式,在主控端电脑上安装服务器端程序,在被监控端电脑上安装客户端程序。该系统的控制过程是先在主控端电脑上执行服务器程序,在命令收发过程中,主控端向被监控端配置的 UDP 端口发送命令,该命令是一个控制命令,要求被监控端来连接其开启的 TCP 端口和要求被监控端执行的操作,如果被监控端监听到该 UDP 命令,主动开启 TCP 端口向主控端发送连接请求。这样就建立了一个特殊的远程服务,然后通过这个远程服务,主控端使用各种远程控制功能发送远程控制命令,控制被监控端电脑中的各种应用程序运行。系统总体结构如图 1: