基于java的远程监控系统的设计与实现【开题报告+文献综述+毕业论文】

基于java的远程监控系统的设计与实现【开题报告+文献综述+毕业论文】

ID:429995

大小:363.72 KB

页数:44页

时间:2017-08-01

上传者:U-944
基于java的远程监控系统的设计与实现【开题报告+文献综述+毕业论文】_第1页
基于java的远程监控系统的设计与实现【开题报告+文献综述+毕业论文】_第2页
基于java的远程监控系统的设计与实现【开题报告+文献综述+毕业论文】_第3页
基于java的远程监控系统的设计与实现【开题报告+文献综述+毕业论文】_第4页
基于java的远程监控系统的设计与实现【开题报告+文献综述+毕业论文】_第5页
资源描述:

《基于java的远程监控系统的设计与实现【开题报告+文献综述+毕业论文】》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

毕业论文本科毕业论文开题报告计算机科学与技术基于java的原创监控系统的设计与实现一、综述本课题国内外研究动态,说明选题的依据和意义远程监控指的是通过计算机网络,对分布在网络上的计算机实现监视和控制。这种监控是通过对基于网络通讯的标准通讯协议和对目标主机的准确控制来实现的。网络监控采用多元的信息传输、监控、管理和一体化的集成,实现了消息、资源和任务的共享,并能够跟其他的计算机网络系统互联,向用户提供了一个更高效、更全面、更安全、更快捷的服务方式。随着计算机网络的迅猛发展,全球信息化已经成为人类未来发展的大趋势,远程监控也必将对人们提高工作效率、实现信息和资源共享、打破空间限制和实现技术革新等各个方面起到积极的作用,而且,也将对信息安全等网络安全领域,防止网络犯罪等领域的技术发展提供有益的技术支持。所以,对于远程监控技术的研究分析具有深远的意义。再随着计算机及网络的应用普及,千千万万的人们在娱乐、通讯、学习、工作等各方面都实现了前所未有的信息化,极大地提高了生活质量与工作效率.然而在这种种便利背后,你关注的人在做什么呢?比如:公司员工.因此,远程监控发挥作用了.这里以公司领导为例,远程监控系统软件方便了公司领导人管理公司员工.在一个企业中,作为公司领导人,一定很担心自己的员工利用上班时间做工作以外的其他事情,也很担心他们泄露公司机密,等等.有了远程监控,这样的担心就很容易解决,你不用亲临监督每个员工,在自己电脑面前就能对他们的一举一动了如指掌.通过远程监控系统的设计,使主控端能够在以下几方面对被控端实施控制.实现查看被控端屏幕,及时了解被控端的操作,通过DOS命令对被控端进行控制.可以在主控端和被控端实现文件的上传、下载,传递消息.能实现对被监控端鼠标和键盘的模拟.当发现被控端操作不当时,通过强行关机或重启命令来使被控端恢复到原来的状态. 毕业论文远程监控软件一般分两个部分:一部分是客户端程序Client,另一部分是服务器端程序Server,多数远程监控软件把被监控端作为服务器,主控端作为客户端.考虑到在监控过程中,如果把主控端作为客户端向被监控端发送TCP连接请求,容易被防火墙或者杀毒软件阻止,监控过程就不能够成功进行.因此,本毕业设计将被监控端设计为客户端,向主控端发连接请求,建立连接后,主控端向被监控端发送远程控制命令,控制被监控端电脑中的各种应用程序运行,被监控端对主控端发送来的命令进行处理,并将命令处理结果返回给主控端。再由于java技术的飞速发展给远程监控系统的实现提供了良好的基础。Java语言是一种纯粹的面向对象编程语言,可以不加修改地运行于多种平台上面,其良好的可移植性和雨平台无关性使得它在很多方面得到广泛的运用。因此本系统将运用java予以按进行编写使其发挥预期中的优点。二、研究的基本内容,拟解决的主要问题:研究的基本内容:1.连续获得被控端机器屏幕的变化。2.实现被控端硬盘文件的上传和下载。3.实现对鼠标和键盘的模拟。4.远程关机,远程启动计算机拟解决的主要问题:1.系统实用,界面操作简便。2.被监控端自动隐藏运行,被监控端将随电脑启动而自动运行,运行时默认无任何可见界面。三、研究步骤、方法及措施:步骤:首先阅读国内相关研究成果,制定出论文的研究目标和需要实现的功能,再是编写论文的提纲,然后是根据论文提纲,收集资料,接着对收集到的资料进行筛选,整理,学习,再接着编写代码进行实践。最后根据实践结果撰写论文正文。方法:资料检索法,参考文献查找法,比较分析法和数据统计法;措施:通过图书馆借阅书本和上互联网进行查找资料。参考文献[1](韩)徐明浩著,武传海译.Java编程基础、应用与实例[M].北京:人民邮电出版社,2005.10[2]耿祥义,张跃平.JAVA2(第二版)[M].北京:清华大学出版社,2004。[3]BruceEckel.JAVA编程思想[M].机械工业出版社,2005。[4]张海藩.软件工程导论[M].北京:清华大学出版社,2004。[5]RogerS.Pressmen.软件工程实践者的研究方法[M].机械工业出版社,2004。[6]杨明福.计算机网络原理[M].北京:经济科学出版社,2007.6 毕业论文[7]李鲁群.用JavaRobot对象实现服务器屏幕远程监视[EB].http://gceclub.sun.com.cn/yuanchuang/week-6/robot.html[8]刘光宝,TCP/IP应用程序的通信连接模式,http://www.ibm.com/developerworks/cn/aix/library/0807_liugb_tcpip/[9]埃史尔,陈昊鹏.java编程思想(第4版).机械工业出版社(2007-06出版)。[10]李钟尉,周小彤,陈丹丹,等.java从入门到精通(第2版):清华大学出版社(2010-07出版)。[11]辛运帏,饶一梅,马素霞.java程序设计.清华大学出版社(2006-08出版)。[12]JoshuaBloch,杨春花,俞黎敏.Effectivejava中文版.机械工业出版社(2009-01出版).[13]卡尔弗特(KennethL.Calvert),多纳霍(MichaelJ.Donahoo),周恒民.javaTCP/IPSocket编程(原书第2版).机械工业出版社(2009-01出版)。[14]孙卫琴.java面向对象编程.电子工业出版社(2006-07出版)。[15]吴亚峰,苏亚光.30天学通Java项目案例开发(附DVD光盘1张).电子工业出版社(2009-07出版)。[16]曲培新.Java项目开发案例精粹.电子工业出版社(2010-06出版)。[17]哈诺德,Java网络编程(第3版).中国电力出版社(2005-11出版)。[18]IanF.Darwin,关丽荣,张晓坤.Java经典实例(第2版).中国电力出版社(2009-02出版)。[19]布洛克(JoshuaBloch),加夫特(NealGafter),陈昊鹏.Java解惑.人民邮电出版社(2010-12出版)。[20]林信良,JavaJDK6学习笔记(附光盘).清华大学出版社(2007-04出版)。 毕业论文毕业论文文献综述计算机科学与技术基于java的远程监控系统的设计与实现一、前言近年来,随着计算机及网络的应用普及,千千万万的人们在娱乐、通讯、学习、工作等各方面都实现了前所未有的信息化,极大地提高了生活质量与工作效率。然而在这种种便利背后,你关注的人在做什么呢?比如:公司员工。因此,远程监控发挥作用了。这里以公司领导为例,远程监控系统软件方便了公司领导人管理公司员工。在一个企业中,作为公司领导人,一定很担心自己的员工利用上班时间做工作以外的其他事情,也很担心他们泄露公司机密,等等。有了远程监控,这样的担心就很容易解决,你不用亲临监督每个员工,在自己电脑面前就能对他们的一举一动了如指掌[1]。网络技术的不断发展,也为远程监控技术的发展创造了条件。远程监控软件一般分两个部分:一部分是客户端程序Client,另一部分是服务器端程序Server,多数远程监控软件把被监控端作为服务器,主控端作为客户端[2]。考虑到在监控过程中,如果把主控端作为客户端向被监控端发送TCP连接请求,容易被防火墙或者杀毒软件阻止,监控过程就不能够成功进行。因此,本毕业设计将被监控端设计为客户端,向主控端发连接请求,建立连接后,主控端向被监控端发送远程控制命令,控制被监控端电脑中的各种应用程序运行,被监控端对主控端发送来的命令进行处理,并将命令处理结果返回给主控端[3]。远程监控软件顺应时代发展的需求,它实用、使用简便,是非常不错的软件。二、远程监控系统的现状远程监控是在网络上由一台电脑(主控端Remote)远距离去监控另一台电脑(被监控端Host)的技术,这里的远程不是字面意思的远距离,一般指通过网络监控远端电脑,不过,大多数时候我们所说的远程监控往往指在局域网中的远程监控而言[4]。当操作者使用主控端电脑监控被监控端电脑时,就如同坐在被监控端电脑的屏幕前一样,可以启动被监控端电脑的应用程序,可以使用被监控端电脑的文件资料,不过,有一个概念需要明确,那就是主控端电脑只是将键盘和鼠标的指令传送给远程电脑,同时将被监控端电脑的屏幕画面通过通信线路回传过来[5] 毕业论文。也就是说,我们控制被监控端电脑进行操作似乎是在眼前的电脑上进行的,实质是在远程的电脑中实现的,不论打开文件,还是上网浏览、下载等都是存储在远程的被监控端电脑中的。电脑中的远程控制技术,始于DOS时代,只不过当时由于技术上没有什么大的变化,网络不发达,市场没有更高的要求,所以远程控制技术没有引起更多人的注意[6]。但是,随着网络的高度发展,电脑的管理及技术支持的需要,远程操作及控制技术越来越引起人们的关注。远程控制一般支持下面的这些网络方式:LAN、WAN、拨号方式、互联网方式。此外,有的远程控制软件还支持通过串口、并口、红外端口来对远程机进行控制(不过,这里说的远程电脑,只能是有限距离范围内的电脑了)[7]。传统的远程控制软件一般使用NETBEUI、NETBIOS、IPX/SPX、TCP/IP等协议来实现远程控制,不过,随着网络技术的发展,目前很多远程控制软件提供通过Web页面以Java技术来控制远程电脑,这样可以实现不同操作系统下的远程控制,例如数技通科技有限公司在就推出了全球第一套基于中文JAVA的跨平台远程控制软件――易控[8]。三、远程监控系统的原理和特点随着计算机网络的迅猛发展,全球信息化已经成为人类未来发展的大趋势,远程监控也必将对人们提高工作效率、实现信息和资源共享、打破空间限制和实现技术革新等各个方面起到积极的作用,而且,也将对信息安全等网络安全领域,防止网络犯罪等领域的技术发展提供有益的技术支持[9]。所以,对于远程监控技术的研究分析具有深远的意义。远程监控软件一般分两个部分:一部分是客户端程序Client,另一部分是服务器端程序Server,由于本毕业设计的通信模块有别于传统的远程监控软件,在使用前需要将客户端程序安装到被监控端电脑上,将服务器端程序安装到主控端电脑上[10]。它的控制的过程是先在被监控端电脑上执行客户端程序,像一个普通的客户一样向主控端电脑中的服务器端程序发出信号,建立一个特殊的远程服务,然后通过这个远程服务,接收主控端发送过来的远程控制命令,并对命令进行处理,最后将命令处理结果返回给主控端,我们称这种远程控制方式为基于远程服务的远程控制,通过远程监控软件,我们可以进行很多方面的远程控制,包括获取目标电脑屏幕图像、窗口及进程列表;记录并提取远端键盘事件(击键序列,即监视远端键盘输入的内容);可以打开、关闭目标电脑的任意目录并实现资源共享;提取拨号网络及普通程序的密码;激活、中止远端程序进程;管理远端电脑的文件和文件夹;关闭或者重新启动远端电脑中的操作系统;修改Windows注册表; 毕业论文通过远端电脑上、下载文件和捕获音频、视频信号等[11]。前面我们所说的是一台电脑对一台电脑的情况,其实,基于java的远程控制最适合的模式是一对多,即利用远程监控软件,我们可以使用一台电脑监控多台电脑,这就使得我们不必为办公室的每一台电脑都安装一个调制解调器,而只需要利用办公室局域网的优势就可以轻松实现远程多点控制了[12]。在进行一台电脑对多台远端电脑进行控制时,我们发现,远程监控软件似乎更像一个局域网的网络管理员,而提供远程控制的远程终端服务就像极了办公室局域网的延伸。这种一对多的连接方式在节省了调制解调器的同时,还使得网络的接入更加安全可靠,网络管理员也更易于管理局域网上的每一台电脑。四、远程监控系统的开发平台JCeator目前分为JCeatorLe和JCeatorPro两个版本JCreatLe为免费版,而JCeatorPro要注册。JCreatLe功能不及JCeatorPro.JCreator专业版是一款适合于各个Java语言编程开发人员的IDE工具[13]。她为使用者提供了大量强劲的功能,例如:项目管理、工程模板、代码完成、调试接口、高亮语法编辑、使用向导以及完全可自定义的用户界面。Jcreator是一个用于Java程序设计的集成开发环境,具有编辑、调试、运行Java程序的功能。当前最新版本是Jcreator5.00,它又分为LE和Pro版本。LE版本功能上受到一些限制,是免费版本。Pro版本功能最全,但这个版本是一个共享软件。这个软件比较小巧,对硬件要求不是很高,完全用C++写的,速度快、效率高。具有语法着色、代码自动完成、代码参数提示、工程向导、类向导等功能。第一次启动时提示设置JavaJDK主目录及JDKJavaDoc目录,软件自动设置好类路径、编译器及解释器路径,还可以在帮助菜单中使用JDKHelp。但目前这个版本对中文支持性不好。开发语言Java语言是SUN公司于1995年5月推出的新一代面向对象的计算机通用编程语言,是继WWW之后又一引起世界轰动的产品。Java语言的特点是跨平台和强大的网络编程功能。在Java语言诞生之前,Internet已存在,所以Java语言本身就封装了大量进行网络编程的类库,使得网络编程功能强大,同时又简化了网络编程的操作[14]。因此利用Java语言可以开发出功能强大的网络应用程序。JavaME(JavaPlatform,MicroEdition)。这个版本以前称为J2ME。JavaME为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒 毕业论文和打印机)上运行的应用程序提供一个健壮且灵活的环境[15]。JavaME包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于JavaME规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能[16]。jar工具是个java应用程序,可将多个文件合并为单个JAR归档文件[16]。jar是个多用途的存档及压缩工具,它基于ZIP和ZLIB压缩格式。然而,设计jar的主要目的是便于将javaapplet或应用程序打包成单个归档文件[17]。将applet或应用程序的组件(.class文件、图像和声音)合并成单个归档文件时,可以用java代理(如浏览器)在一次HTTP事务处理过程中对它们进行下载,而不是对每个组件都要求一个新连接[18]。这大大缩短了下载时间。jar还能压缩文件,从而进一步提高了下载速度[19]。此外,它允许applet的作者对文件中的各个项进行签名,因而可认证其来源。jar工具的语法基本上与tar命令的语法相同[20]。五、总结综上所述,远程监控系统能够完成连续获得被监控端机器的屏幕变化;能对对方机器实现文件上传、下载;能远程控制对方机器;能重启,关闭对方计算机。所以远程监控系统能够狠好的完成预期的功能,并且能在生活和工作中得到很好的运用。 毕业论文参考资料[1](韩)徐明浩著,武传海译.Java编程基础、应用与实例[M].北京:人民邮电出版社,2005.10。[2]卡尔弗特(KennethL.Calvert),多纳霍(MichaelJ.Donahoo),周恒民.javaTCP/IPSocket编程(原书第2版).机械工业出版社(2009-01出版)。[3]耿祥义,张跃平.JAVA2(第二版)[M].北京:清华大学出版社,2004。[4]张海藩.软件工程导论[M].北京:清华大学出版社,2004。[5]RogerS.Pressmen.软件工程实践者的研究方法[M].机械工业出版社,2004。[6]杨明福.计算机网络原理[M].北京:经济科学出版社,2007.6[7]李鲁群.用JavaRobot对象实现服务器屏幕远程监视[EB].http://gceclub.sun.com.cn/yuanchuang/week-6/robot.html[8]刘光宝,TCP/IP应用程序的通信连接模式,http://www.ibm.com/developerworks/cn/aix/library/0807_liugb_tcpip/[9]埃史尔,陈昊鹏.java编程思想(第4版).机械工业出版社(2007-06出版)。[10]李钟尉,周小彤,陈丹丹,等.java从入门到精通(第2版):清华大学出版社(2010-07出版)。[11]辛运帏,饶一梅,马素霞.java程序设计.清华大学出版社(2006-08出版)。[13]BruceEckel.JAVA编程思想[M].机械工业出版社,2005。[12]JoshuaBloch,杨春花,俞黎敏.Effectivejava中文版.机械工业出版社(2009-01出版).[14]孙卫琴.java面向对象编程.电子工业出版社(2006-07出版)。[15]吴亚峰,苏亚光.30天学通Java项目案例开发(附DVD光盘1张).电子工业出版社(2009-07出版)。[16]曲培新.Java项目开发案例精粹.电子工业出版社(2010-06出版)。[17]哈诺德,Java网络编程(第3版).中国电力出版社(2005-11出版)。[18]IanF.Darwin,关丽荣,张晓坤.Java经典实例(第2版).中国电力出版社(2009-02出版)。[19]布洛克(JoshuaBloch),加夫特(NealGafter),陈昊鹏.Java解惑.人民邮电出版社(2010-12出版)。[20]林信良,JavaJDK6学习笔记(附光盘).清华大学出版社(2007-04出版)。 毕业论文本科毕业论文(20届)基于java的远程监控系统的设计与实现专业:计算机科学与技术 毕业论文摘要随着网络技术的不断发展,为远程监控技术的发展创造了条件。远程监控系统软件越来越受到人们的重视,其实用性也越来越强。基于JAVA的远程监控系统软件突破了空间的限制,使用者不用亲临,在自己的电脑面前就能轻松的实现对被监控端机器的监控。本系统采用Java网络编程和Java图形编程实现。运用Jcreator开发环境,实现了以下功能:能连续获得被监控端机器屏幕变化;实现对鼠标、键盘的模拟;实现在远程机器上执行任意DOS命令;远程关机、远程重启计算机,方便了用户监视和操作被监控端机器。本文介绍了局域网的环境中远程监控系统的分析、设计和开发的全部过程。运用功能结构图、程序流程图等对远程桌面监控子系统的设计开发过程进行了详细的说明。首先简单地介绍了远程监控系统在现在的需求和面临的问题;介绍了系统的总体目标以及用户需求。详细介绍了系统的基本框架和组成结构;然后主要介绍了各个功能模块的具体实现步骤。并对模块中用到的类、构造函数和主要方法做了简单的说明。最后实现程序软件能很好的监控远程计算机的运行情况。关键词∶远程监控;Java;屏幕截取;网络编程 毕业论文TheRemoteMonitoringSystemBasedonJavaofDesignandImplementationAbstractWiththedevelopmentofnetworktechnologyforremotemonitoringtechnologydevelopmentcreatedtheconditions.Remotemonitoringsystemsoftwaremoreandmoreattentionbypeople,itspracticalalsostronger.TheremotemonitoringsystembasedonJAVAsoftwarebrokethroughthedimensionallimitation,usersneednotvisit,intheirowncomputerinfrontwilleasilybeabletorealizethemachinemonitoring.MonitorThissystemUSESJavanetworkprogrammingandJavagraphicsprogrammingrealization.UseJcreatordevelopmentenvironmentandrealizingthefollowingfunctions:togetthecontinuousmonitoringmachinescreenchange;Realizethesimulationofthemouse,keyboard;TheremotemachinerealizationperformsarbitraryDOScommand;Remoteshutdown,remoterestartyourcomputerandconveniencetousersmonitoringandoperationismonitoringterminalmachinesThisarticledescribestheLANenvironment,remotemonitoringsystemanalysis,designanddevelopmentofthewholeprocess.Theuseoffunctionalstructure,theprogramflowchartoftheremotedesktopcontrolsubsystemdesignanddevelopmentofadetaileddescriptionoftheprocess.Firstabriefintroductiontoremotemonitoringsysteminthepresentneedsandproblems;describestheoverallobjectiveofthesystemanduserrequirements.Introducedthebasicframeworkofthesystemandstructure;thenintroduceseachmodulespecificimplementationsteps.Andmodulesusedinclass,theconstructorandthemainwaysofdoingthesimpleinstructions.Finally,softwarecanachievegoodcontroloftheremotecomputeroperation.【Keywords】Remotemonitoring;Java;ScreenCapture;NetworkProgramming 毕业论文目录摘要Abstract1引言11.1远程监控系统的背景和意义11.2远程监控系统的基本原理12.系统可行性和需求分析32.1系统可行性分析32.1.1技术可行性32.1.2社会需求可行性32.1.3经济可行性42.2系统的需求分析42.2.1功能需求42.2.3性能需求42.2.3其他需求53远程监控系统的系统设计和开发环境63.1系统开发工具与运行环境63.1.1java编程语言介绍63.1.2socket协议93.1.3编程开发环境113.2系统的总体设计分析113.2.1系统基本框架113.2.2系统的总体结构123.3主控端功能模块123.3.1显示模块133.3.2控制模块14 毕业论文3.3.3配置模块153.4被控端的功能模块173.4.1配置管理模块173.4.2响应模块173.4.3桌面传输信息模块194远程监控系统的实现204.1系统实现思路204.2主控端功能的实现204.3被控端功能的实现255功能测试295.1主控端功能测试295.1.1对基本操作功能的测试295.1.2扫描局域网中可连主机的测试295.1.3远程控制功能的测试295.2被控端功能测试295.2.1对连接密码的验证测试295.2.2创建存储密码文件的测试295.3测试结果296论文总结30参考文献31 1引言1.1远程监控系统的背景和意义远程监控技术始于DOS时代,因为当时网络不发达,这门技术没有得到很多重视,但是随着网络的高度发展,电脑的管理及技术支持的需要,远程监控技术越来越引起人们的关注。随着社会的不断发展,计算机的不断增多,在网络的高速发展下,生活和工作的效率不断提高。现在有很多公司、企事业单位都建立了自己的内部网络,对于维护人员来说,希望能够通过网络去监控联网的其它计算机的运行情况,希望可以根据网络来改变联网计算机的一些设置,希望能够对出现故障的联网计算机通过网络去远程控制解决。对于管理人员来说,希望通过网络随时了解员工的工作进展情况和规范员工对计算机的使用以及解决工作中存在的问题。为此,迫切需要编写一个适合于局域网的桌面监控程序以满足上述需求。本文设计开发了一个基于Java的远程监控系统。本系统可以实现:远程监控对方操作功能,远程操控电脑,远程控制对方电脑开机、关机,远程控制电脑下载和上传文件。该系统的开发能够很好的解决以上问题,使企业管理更加方便和规范化。1.2远程监控系统的基本原理远程监控技术是指一台计算机通过网络能够监控一台或多台联网计算机[1]。当用户使用本地计算机控制远程主机时,就如同坐在远程主机的屏幕前一样,可以启动远程主机的应用程序,可以使用远程主机的文件资料,甚至可以利用远程主机的外部打印设备和通信设备来进行打印和访问互联网[2]。不过,在远程主机中所运行的程序、所打开的文件、所下载的文档都是存储在远程主机中的,尽管这些操作似乎是在眼前的电脑上进行的,但事实上主控端电脑只是将键盘和鼠标的指令传送给远程主机,同时将被控端电脑的屏幕画面通过通信线路传过来,从而达到控制与被控制的目的[3]。远程控制系统按功能分:遵循一般的原则提供服务者为服务端程序Server、请求服务者为客户端程序Client两大部分。这样实际上在被监控机上所安置的代理程序就是服务端,而监控程序就是客户端[4] 。而在使用监控程序前需要将客户端程序安装到本地计算机上,将服务端程序安装到远程主机上。它的控制的过程是在本地计算机上执行客户端程序,向远程主机中的服务端程序发出信号,建立一个特殊的远程服务,然后通过这个远程服务,使用远程控制功能发送远程控制命令,控制远程主机中的各种应用程序运行[5]。通过远程控制系统,可以进行很多方面的远程控制,包括获取远程主机屏幕图像;打开、关闭远程主机的任意目录;管理远程主机的文件和文件夹;关闭或者重新启动远程主机中的操作系统;通过远程主机上、下载文件和捕获音频、视频信号等[6]。前面我们所说的是一台电脑对一台电脑的情况,其实,基于远程服务的远程控制最适合的模式是一对多,即利用远程监控软件,我们可以使用一台电脑监控多台电脑,这就使得我们不必为办公室的每一台电脑都安装一个调制解调器,而只需要利用办公室局域网的优势就可以轻松实现远程多点控制了[7]。在进行一台电脑对多台远端电脑进行控制时,我们发现,远程监控软件似乎更像一个局域网的网络管理员,而提供远程控制的远程终端服务就像极了办公室局域网的延伸。这种一对多的连接方式在节省了调制解调器的同时,还使得网络的接入更加安全可靠,网络管理员也更易于管理局域网上的每一台电脑[8]。 2.系统可行性和需求分析随着计算机网络的不断发展,不断有各种各样的软件出现来丰富我们的生活,在一个软件开发前都需要进行讨论是否需要研发这个软件,所以我们要对各种需求和可行性进行分析。2.1系统可行性分析2.1.1技术可行性计算机也有很多编程语言,总的来说可以分成机器语言,汇编语言,高级语言三大类。随着计算机编程技术的不断发展,计算机在生活中常用的编程语言有VB,C语言,C++,java等等[9]。这些编程语言都体现出下列几个特点;1简单性:提供最基本的方法来完成指定任务,只需理解它的一些基本概念究可以用它编写出适合于各种状况的应用程序。2面向对象:提供简单的类机制以及动态的接口模型,对象中封装状态以及相应的方法,实现了模块化和信息隐藏;提供一类对象原型,并且通过继承机制子类可以使用父类提供的代码,实现了代码的复用。3安全性:用于网络、分布环境下有安全机制保证。4平台无关性:与平台无关的特性使程序可以方便地被移植到网络上和不同机器、不同平台[10]。2.1.2社会需求可行性随着计算机及网络的应用普及,千千万万的人们在娱乐、通讯、学习、工作等各方面都实现了前所未有的信息化,极大地提高了生活质量与工作效率。那么我们该如何了解知道我们所关注的人在做什么。这里以公司领导为例,远程监控系统软件方便了公司领导人管理公司员工。在一个企业中,作为公司领导人,一定很担心自己的员工利用上班时间做工作以外的其他事情,也很担心他们泄露公司机密,等等。有了远程监控,这样的担心就很容易解决,可以不用亲临监督每个员工,在自己电脑面前就能对他们的一举一动了如指掌。这很好地加强了公司员工使用电脑的规范性,也使得公司的工作效率能够极大的提升。2.1.3经济可行性 本软件成本低廉,对硬件要求也不高。对于支持TCP/IP协议的局域网来说,只要在需要监控的电脑上安装下远程监控系统的被控端,在主电脑上安装控制端,就能很好的实现监控的目的。也不需要购买更多的硬件设施,适合于目前大多数的网络环境,所以说本系统的开发经济可行。2.2系统的需求分析2.2.1功能需求(1)主控端对远程主机的桌面进行实时监视;修改被控制端的系统配置文件;可以对远程主机进行关机和重新启动的操作;可在本地直接操作远程主机;实现鼠标的基本操作。包括:单击、双击、拖拽、滚轮等;实现键盘的基本操作。包括:基本键、控制键、功能键等;对局域网中的远程主机进行扫描,寻找可控主机;对系统的运行状态提供简单的提示信息;(2)被控端开机自动运行服务端程序;退出和设置系统需要身份验证;程序运行时,可以最小化到系统托盘;远程连接需要身份验证;可以改变系统基本设置;对于程序的操作和系统的运行状态提供简单的提示信息;2.2.3性能需求(1)实时性:主控端实时监视远程主机桌面,被控端及时响应主控端的控制请求。(2)安全性:被控端只能被一台主机控制。主控端连接时需要身份验证,退出程序时需提供密码。(3)网络通信量:尽量减少网络上传送的数据量,节省网络资源。(4)与平台无关性:适用于运行不同桌面操作系统的计算机。(5)界面友好、操作简单。2.2.3其他需求被监控端当电脑运行时,被控端电脑主动运行远程监控系统,并提示开启原创监控系统。并在监控端允许下进行实时监控。 3远程监控系统的系统设计和开发环境3.1系统开发工具与运行环境在开发研究一个软件的时候,我们需要寻找一个可靠的实用性高的编程语言,一个可靠的编程环境。可靠的编程语言能使软件实用性加强而代码又不会很多,能使初学者更好的掌握语言。一个好的编程环境能够加快程序的编程速度,使初学者更好的运用软件,实现要开发的软件实现所设计的效果。本系统使用的编程语言是java语言,在JCeator的编译环境下能够简单快速的实现远程监控系统要达到的目标。3.1.1java编程语言介绍Java是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台的总称[11]。用Java实现的HotJava浏览器(支持Javaapplet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Javaapplet[12]。Java分为三个体系JavaSE(Java2PlatformStandardEdition,java平台标准版),JavaEE(Java2Platform,EnterpriseEdition,java平台企业版),JavaME(Java2PlatformMicroEdition,java平台微型版)。JavaSE*JavaSE(JavaPlatform,StandardEdition)。JavaSE以前称为J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。JavaSE包含了支持JavaWeb服务开发的类,并为JavaPlatform,EnterpriseEdition(JavaEE)提供基础。JavaEE*JavaEE(JavaPlatform,EnterpriseEdition)。这个版本以前称为J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。JavaEE是在JavaSE的基础上构建的,它提供Web服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-orientedarchitecture,SOA)和Web2.0应用程序。JavaME*JavaME(JavaPlatform,MicroEdition)。这个版本以前称为J2ME。JavaME为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。JavaME包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持[13]。基于JavaME规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。主要特性1、Java语言是简单的。Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。2、Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。3、Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(javanet),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。4、Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。5、Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。 6、Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。7、Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSIC实现的。8、Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。9、Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。10、Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable)的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。11、Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(JavaEnterpriseAPIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。“屏幕的截取”是比较接近操作系统底层的操作,在Windows平台下,该操作似乎成了VC、VB等语言开发的专利。事实上,“屏幕的截取”在Java应用程序中,及其简单。在JavaJDK1.5.0中提供了一个"机器人"Robot类。该类用于产生与本地操作系统有关的底层输入、测试应用程 序运行或自动控制应用程序运行。Robot类提供了一个方法:.createScreenCapture(..),可以直接将全屏幕或某个屏幕区域的像素拷贝到一个BufferedImage对象中,我们只需要将该对象写入到一个图像文件之中,就完成了屏幕到图像的拷贝过程[14]。Jar命令功能:Java归档工具语法:jar[命令选项][manifest]destinationinput-file[input-files]jar工具是个java应用程序,可将多个文件合并为单个JAR归档文件。jar是个多用途的存档及压缩工具,它基于ZIP和ZLIB压缩格式。然而,设计jar的主要目的是便于将javaapplet或应用程序打包成单个归档文件[15]。将applet或应用程序的组件(.class文件、图像和声音)合并成单个归档文件时,可以用java代理(如浏览器)在一次HTTP事务处理过程中对它们进行下载,而不是对每个组件都要求一个新连接。这大大缩短了下载时间。jar还能压缩文件,从而进一步提高了下载速度。此外,它允许applet的作者对文件中的各个项进行签名,因而可认证其来源。jar工具的语法基本上与tar命令的语法相同。3.1.2socket协议所谓socket通常也称作“套接字”,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话[19]。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。socket的英文原义是“孔”或“插座”。作为4BDSUNIX的进程通信机制,取后一种意思。通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,象一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电,有的提供110伏交流电,有的则提供有线电视节目。客户软件将插头插到不同编号的插座,就可以得到不同的服务[16]。socket非常类似于电话插座。以一个国家级电话网为例。电话的通话双方相当于相互通信的2个进程,区号是它的网络地址;区内一个单位的交换机相当于一台主机 ,主机分配给每个用户的局内号码相当于socket号。任何用户在通话之前,首先要占有一部电话机,相当于申请一个socket;同时要知道对方的号码,相当于对方有一个固定的socket。然后向对方拨号呼叫,相当于发出连接请求(假如对方不在同一区内,还要拨对方区号,相当于给出网络地址)。对方假如在场并空闲(相当于通信的另一主机开机且可以接受连接请求),拿起电话话筒,双方就可以正式通话,相当于连接成功。双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向socket发送数据和从socket接收数据。通话结束后,一方挂起电话机相当于关闭socket,撤消连接[17]。在电话系统中,一般用户只能感受到本地电话机和对方电话号码的存在,建立通话的过程,话音传输的过程以及整个电话系统的技术细节对他都是透明的,这也与socket机制非常相似。socket利用网间网通信设施实现进程通信,但它对通信设施的细节毫不关心,只要通信设施能提供足够的通信能力,它就满足了。至此,我们对socket进行了直观的描述。抽象出来,socket实质上提供了进程通信的端点。进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的。正如打电话之前,双方必须各自拥有一台电话机一样。在网间网内部,每一个socket用一个半相关描述:(协议,本地地址,本地端口)一个完整的socket有一个本地唯一的socket号,由操作系统分配。最重要的是,socket是面向客户/服务器模型而设计的,针对客户和服务器程序提供不同的socket系统调用。客户随机申请一个socket(相当于一个想打电话的人可以在任何一台入网电话上拨号呼叫),系统为之分配一个socket号;服务器拥有全局公认的socket,任何客户都可以向它发出连接请求和信息请求(相当于一个被呼叫的电话拥有一个呼叫方知道的电话号码)。socket利用客户/服务器模式巧妙地解决了进程之间建立通信连接的问题。服务器socket半相关为全局所公认非常重要。读者不妨考虑一下,两个完全随机的用户进程之间如何建立通信?假如通信双方没有任何一方的socket固定,就好比打电话的双方彼此不知道对方的电话号码,要通话是不可能的[18]。java.net.Socket继承于java.lang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法。Accept方法用于产生“阻塞”,直到接受到一个连接,并且返回一个客户端的Socket对象实例。"阻塞"是一个术语,它使程序运行暂时“停留”在这个地方,直到一个会话产生,然后程序继续;通常“阻塞”是由循环产生的。getInputStream方法获得网络连接输入,同时返回一个InputStream对象实例。getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。注意:其中getInputStream和getOutputStream方法均可能会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用[20]。服务器与客户端开始都必须调用socket()函数产生一个Socket套接字 。由于让被监控端开TCP端口,很容易被防火墙和杀毒软件阻止,监控就难以完成。这里,我们在主控端开TCP端口,等待被监控端来主动连接,这样监控功能就能更顺利的开始。主控端首先创建一个ServerSocket对象,然后调用ServerSocket的方法accept实现监听。如果被监控端来访问,accept会返回一个socket对象,利用这个对象就可以很轻松的完成服务器和客户端的数据交换。只有被监控端有请求时才建立连接,建立连接后,客户端与服务器之间便可以双向传输数据。当得到socket对象后,主控端建立ObjectInputStream对象,被监控端建立ObjectOutputStream对象实现消息的接收和发送。完成通信后,调用ServerSocket和socket对象的close关闭套接字,结束通信。3.1.3编程开发环境JCeator目前分为JCeatorLe和JCeatorPro两个版本JCreatLe为免费版,而JCeatorPro要注册。JCreatLe功能不及JCeatorPro。JCreator专业版是一款适合于各个Java语言编程开发人员的IDE工具。她为使用者提供了大量强劲的功能,例如:项目管理、工程模板、代码完成、调试接口、高亮语法编辑、使用向导以及完全可自定义的用户界面。Jcreator是一个用于Java程序设计的集成开发环境,具有编辑、调试、运行Java程序的功能。当前最新版本是Jcreator5.00,它又分为LE和Pro版本。LE版本功能上受到一些限制,是免费版本。Pro版本功能最全,但这个版本是一个共享软件。这个软件比较小巧,对硬件要求不是很高,完全用C++写的,速度快、效率高。具有语法着色、代码自动完成、代码参数提示、工程向导、类向导等功能。第一次启动时提示设置JavaJDK主目录及JDKJavaDoc目录,软件自动设置好类路径、编译器及解释器路径,还可以在帮助菜单中使用JDKHelp。但目前这个版本对中文支持性不好。图3所示是这个软件的应用示例。特点1.可无限撤销、代码缩进、自动类库方法提示、按所选智能定位查阅JavaAPI文档等功能。2.新版采用仿VS2005界面设计,体验感觉更快更好更易用。3.支持JSP、Ant、CVS。4.小巧、易用、美观,是Java初级程序员的理想IDE。3.2系统的总体设计分析 3.2.1系统基本框架基本框架如下图(3-1)所示电脑首先在局域网上扫描安装了服务端的电脑,找到电脑后客服端向服务端监控端口发出信号建立连接。主控端向被监控端配置的UDP端口发送命令,该命令是一个控制命令,要求被监控端来连接其开启的TCP端口,如果被监控端监听到该UDP命令,主动开启TCP端口向主控端发送连接请求,这样就建立了一个远程服务,然后通过这个远程服务,主控端使用各种远程控制功能发送远程控制命令,控制被监控端电脑中的各种应用程序运行。主控端(服务器)被控端(服务器)连接远程服务器发送控制信息显示桌面信息局域网等待远程连接获取桌面信息执行控制信息图3-1系统的基本结构图3.2.2系统的总体结构总体结构包括主控端和被控端两大部分。其中主控端又分为消息输入,命令处理结果显示模块,通信模块。消息输入模块负责将用户界面的事件传送到通信模块,通信模块将命令信息发送到被监控端;被监控端执行操作后返回的成功或失败信息交由主控端命令处理结果显示模块根据信息的格式进行显示。被监控端包括的模块有:通信模块,命令处理模块。被监控端处于侦听状态,一旦接收到合法的连接请求,就开UDP端口,并开启命令接受线程,建立连接后,通过通信模块接收主控端发来的命令信息,经命令处理模块解释后,并将结果返回到主控端。 3.3主控端功能模块主控端程序是监控系统的重要组成部分之一,其中包含了对远程电脑的桌面图像的传送速度、核对远程ip地址、鼠标和键盘的各种控制等等程序,这加大了编程的复杂程度,于是我们按照主控端在系统中主要的作用分为显示远程桌面,一些基础配置的管理,对远程电脑的控制这3个主要的功能模块。3.3.1显示模块显示远程桌面模块的功能结构如图(3-2)所示。它是主控端的核心部分,不仅需要读取输入流中的数据并解码,而且需要将图片绘制到自己创建的容器中。除此之外,还要在容器中添加远程控制的开关组件和调节发送速度的组件。(1)显示远程桌面读取输入流中的数据并解码。连接建立后,从输入流中读取的数据是经过被控端编码后发送过来,因此需要解码才能将图片绘制到容器。创建容器并绘制图片。创建的容器与图片的大小会不一致,因此需要根据容器的大小计算图片的缩放比例。(2)开关远程控制对远程主机的控制在需要时开启,在不需要时关闭,可以提高系统的灵活性,因此需要在容器中添加开关按钮。(3)调节发送速度为了满足用户对网络通信量和系统实时性的不同要求,本系统可以随时改变发送速度,发送速度从0毫秒抓取一张至1000毫秒抓取一张。速度越快,实时性越好,但是通信量越大;速度越慢,通信量越小,但实时性越差。系统默认100毫秒抓取一张。 显示模块开启远程控制关闭远程控制调节发送频率显示远程桌面图3-2主控端显示模块3.3.2控制模块所谓的控制模块就是控制被控端电脑的鼠标移动点击和键盘的输入进行控制。其主要的功能如图(3-3)所示。远程控制模块主要包括:鼠标操作功能和键盘操作功能。(1)鼠标操作功能根据本地计算机的鼠标所输入的操作向远程主机发送控制信息。(2)键盘操作功能根据本地计算机的键盘的输入向远处主机发送控制信息。 远程控制模块鼠标控制模块鼠标单击控制鼠标双击控制鼠标移动控制鼠标滚轮控制鼠标拖拽控制控制发送频率键盘操作控制模块按键按下控制按键抬起控制图3-3控制模块功能结构图3.3.3配置模块配置模块的主要功能是为了实现对系统的基本操作和设置,再增加一些其他的功能,可以提高整个系统的性能,使其功能更强。配置模块的功能结构如图(3-4)所示,包括两大功能:基本操作功能和扫描可连主机功能。(1)基本操作功能输入IP地址。把要监控的远程计算机的IP地址输入进去。格式采用点分十进制32位的IPV4地址。输入端口号。输入远程主机被控端程序监听的端口号。输入连接密码。为了远程计算机的安全,防止远程计算机被非法用户监控,被控端应要求主控端输入正确的链接密码。输入发送速度。为了满足用户对网络通信量和系统实时性的不同要求,本系统可以手动设置发送速度,发送速度从0毫秒抓取一张至1000毫秒抓取一张。 (2)、扫描可连主机功能在局域网中包含很多主机,对于主控端来说,需要知道哪些主机可以连接并且获取可连接主机的IP地址。扫描可连主机成为提高系统实用性与方便操作的重要功能。在大多数局域网中,主机的网络地址是相同的,子网掩码是相同的,主机地址是连续的。这就使扫描可连主机成为了可能,对于设定的一段IP地址,按照设定的端口逐个连接来判断其可连接性,就解决来上述问题。、输入扫描端口号。输入远程主机被控端程序监听的端口号。数值应大于1024小于65535。、分别输入起始IP地址和结束IP地址。其中网络号应相同,子网掩码是255.255.255.000。(3)、信息显示功能配置管理模块基本操作功能输入IP地址输入端口号输入连接密码输入发送速度信息显示功能扫描可连主机功能要扫描端口号起始IP地址结束IP地址信息显示功能用于实时显示系统的状态,获取一些相关的信息,如系统开始运行的时间,对操作错误的提示,本地的主机名和IP地址等。图3-4配置模块功能结构图3.4被控端的功能模块 在被控端中也分为配置管理模块、响应模块和图像传输功能,在被控端中配置管理模块的主要作用是为了被控端电脑安全考虑。配置管理功能模块分为2块:一块是安全管理功能,另一块是系统基本设置功能。响应模块主要为与远程控制模块进行相互的对应。图像传输模块主要是为控制端传输被控制端屏幕图像以进行更好的远程监控操作。3.4.1配置管理模块配置管理模块的主要功能是为了保护被控端的电脑安全和更改被控端的系统设置。安全管理功能的思路是只有输入正确的密码才能退出系统和更改密码。如图(3-5)所示系统的基本设置功能只有在输入正确的密码后才可以对系统进行设置。包括重设端口号,连接密码,管理密码和恢复默认值等等。3.4.2响应模块响应模块的主要任务是对应远程控制模块对的操作,比如改变传输频率、鼠标的单击和双击、鼠标的拖拽、键盘的按下和抬起响应。如图(3-6)所示配置管理模块安全管理功能系统基本设置输入推出密码系统退出操作输入设置密码信息显示窗口恢复默认设置重设监听窗口重设连接密码重设管理密码图3-5配置管理模块功能图 响应控制模块鼠标操作功能鼠标单击响应鼠标双击响应鼠标移动响应鼠标滚轮响应鼠标拖拽响应键盘操作功能改变发送速度按键按下响应按键抬起响应图3-6响应模块图发送桌面信息模块获取桌面信息图片信息编码编码信息输出图3-7发送琢磨信息模块3.4.3桌面传输信息模块该模块主要运行的是桌面图像的传输。为了减少通信量,截取的图片要与前一张图片相比较如果图片一样就不传输过去,如果不一样就进行图片传输。信息发送模块如图(3-7)所示。 (1)截取桌面图片:设置一个截取图片的频率,每过一段时间对桌面进行全屏截图,把截到得图像与上一张进行比较。(2)图片信息编码:把截取到得图片与上一张进行对比,如果不同就对图片进行按照JPEG格式压缩。(3)编码信息输出将压缩后的图片信息输出。 4远程监控系统的实现4.1系统实现思路经过上面的分析远程监控系统就是由主控端和被控端通过网络进行数据的流通,达到监控和被监控的目的。而监控端和被控端是采用Socket编程来进行连接。Socket支持TCP/IP协议网络通信的基本操作;它屏蔽了网络底层的通信细节,使编程简单;它对通信端点进行了抽象,提供发送和接收数据机制及打开、计算和关闭会话的能力。本项目中,客户端和服务器代表运行在Windows操作平台下,采用JavaSocket来编程实现命令和数据信息的传输。因此,需要两个独立的程序ClientTest(主控端)和ServiceTest(被控端)其程序总体流程如图(4-1)所示:首先ServiceTest(被控端)监听设定的端口,等待ClientTest(主控端)的连接请求。ClientTest连接指定端口,与SreviceTest建立连接后,ServiceTest抓取桌面图像,编码后发送。ClientTest接收图像,解码后绘制到组件上显示。ClientTest发送控制请求,ServiceTest响应控制请求并按控制信息进行相应操作。4.2主控端功能的实现操作系统是一个进程,也是一个正在进行的程序。当主控端的程序运行了就是在运行一个进程。进程又被细化为线程,也就是一个进程下面能够独立运行的程序的最小单位,一个进程也包含了一个或者多个线程。线程在感觉上市多个一起再CPU上运行的,可事实上,在某个时间点CPU上运行的只有一个线程。在Java语言中实现Runnable接口是创建线程的一个必要条件。Runnable接口位于java.lang包中,它只有一个方法run()。run()方法没有返回值,使用实现接口Runnable的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的run方法。本系统的主控程序(ClientTest)把远程桌面监控线程和配置管理线程定义为两个线程。远程桌面监控线程主要实现基本操作功能和扫描可连接主机功能。配置管理线程主要实现显示功能、对远程主机的鼠标和键盘的控制操作功能。 下图(4-2)是ClientTest的基本操作功能程序流程图,它是ClientTest的开始,主要功能是接收用户输入的数据,定义远程监控端的IP地址和端口号。只有当确定了远程监控机器的IP地址才能进行连接监控。ServiceTestClientTest否是否是否是否是否是开始输入IP地址输入端口号连接接受桌面信息显示远程桌面发送控制信息断开连接终止程序结束开始服务端监控端口等待连接连接响应连接请求获取桌面信息发送桌面信息控制桌面信息接受控制信息执行控制命令断开连接程序终止结束图(4-1) 图4-1程序总体流程开始输入IP端口和端口号输入连接密码输入发送速度监听“连接”按钮按钮事件?IP地址与端口号正确?频率正确?默认100连接远程主机连接成功显示远程桌面模块端口连接?程序终止?结束图4-2ClientTest的基本操作功能程序流程图在主控端和被控端之间运用socket编程进行信息传输。socket支持TCP/IP协议网络通信的基本操作;它屏蔽了网络底层的通信细节,使编程简单;它对通信端点进行了抽象,提供发送和接收数据机制及打开、计算和关闭会话的能力。 本系统的远程控制采用Java的RMI远程方法调用实现。远程对象所属的类必须实现一个远程接口,由RMI框架负责创建的存根也会实现这个远程接口,在远程接口中声明了可以被客户程序访问的远程方法。客户程序要访问远程方法需要运用Naming类和Remote接口。1显示图像。下图为控制端中显示的控制窗口。paint(Graphicsg):paint()就是一个画笔方法,用来在屏幕上绘制所需绘制的东西。想要在屏幕上绘制东西,就得先用Graphics把内容绘制到内存里去,再由repaint();方法显示到屏幕上去。2构造方法publicClientTest(Stringip)throwsExceptio:把控制端口设置成一个线程进行处理。ended=false;//设置UDP数据报端口。socket=newDatagramSocket(5000);//设置存放接收数据缓冲区的大小,超过这个缓冲去则显示不正确。 socket.setReceiveBufferSize(409600);//存放被控端IP地址。server=InetAddress.getLocalHost();//定义向被控端发出截取屏幕图像指令的线程。newThread(newRunnable())此时传给Thread构造函数的应该是一个实现Runnable的类的对象引用,因此newRunnable(){publicvoidrun(){...}}就包括了定义这个类(只不过这个类没有名字)和实例化这个类的对象。JMenuItemtarget=newJMenuItem("监控目的地址");设置了输入监控的地址。(1)远程监控鼠标功能的实现this.addMouseListener(newMouseListener(){publicvoidmouseClicked(MouseEvente){process(e);}publicvoidmouseEntered(MouseEvente){process(e);}publicvoidmouseExited(MouseEvente){process(e);}//点击鼠标按键mousePressed(MouseEvente),设置为释放鼠标按键创建了mouseReleased(MouseEvente)侦测鼠标坐标的位置设置鼠标的移动监听this.addMouseMotionListener(newMouseMotionListener(){publicvoidmouseDragged(MouseEvente){sendMouse(MouseEvent.MOUSE_MOVED,e.getX(),e.getY(),e.getButton());}publicvoidmouseMoved(MouseEvente){sendMouse(MouseEvent.MOUSE_MOVED,e.getX(),e.getY(),e.getButton());}});/*endaddMouseMotionListener()*/构造了sendkey来设置法师键盘信息的方法。构造了sendMouse来实现发送鼠标事件信息方法。3将接收到的屏幕图象数据进行解压,还原成图像privatevoidgetScreen(InputStreaminput){try{JPEGImageDecoderdecoder=JPEGCodec.createJPEGDecoder(input); BufferedImageimage=decoder.decodeAsBufferedImage();this.image=image;this.setPreferredSize(newDimension(image.getWidth(),image.getHeight()));this.updateUI();}catch(Exceptione){e.printStackTrace();}}4.线程RUN(),接收传来的屏幕图像数据publicvoidrun(){byte[]bytes=newbyte[409600];while(!ended){try{DatagramPacketpacket=newDatagramPacket(bytes,bytes.length);socket.receive(packet);ByteArrayInputStreaminput=newByteArrayInputStream(packet.getData(),packet.getOffset(),packet.getLength());getScreen(input);}//tryendcatch(Exceptione){}}//endwhile}//endrun5.close方法:使用Close方法可关闭Connection对象或Recordset对象以便释放所有关联的系统资源。关闭对象并非将它从内存中删除,可以更改它的属性设置并且在此后再次打开。6.MAIN方法:在里面实现建立输入IP地质信息窗口ipwin,输入IP地址窗体——健的监听,输入IP地址窗体——窗口关闭的监听——显示图像窗口——实例化启动线程。显示图像窗口——窗口关闭的监听,对被控端显示窗口的键盘进行监听。 4.3被控端功能的实现下图为被控端的被控窗口。publicclassServerTestextendsThread,把被控端设置为一个线程进行处理。1构造方法publicServerTest()throwsException{robot=newRobot();toolkit=Toolkit.getDefaultToolkit();this.socket=newDatagramSocket(PORT);socket.setSendBufferSize(MAX);end=false;}2发送屏幕方法3方程RUN定义字节数组,放置接收到的数据byte[]bytes=newbyte[4096];创建数据包对象,以便收取数据包DatagramPacketpacket=newDatagramPacket(bytes,bytes.length);堵塞端口,接收数据包this.socket.receive(packet);取出数据包的内容Stringcommand=newString(packet.getData(),packet.getOffset(),20).trim();如果接收到的指令为"REFRESH",则将自己屏幕图像发送出去if(command.equalsIgnoreCase("REFRESH")){ sendScreen(packet.getSocketAddress());}如果指令不是“REFRESH”,则是一个要执行的鼠标或键盘动作指令else{byte[]the=packet.getData();intn=packet.getOffset();intx=Integer.parseInt(newString(the,n+20,10).trim());inty=Integer.parseInt(newString(the,n+30,10).trim());intbutton=Integer.parseInt(newString(the,n+40,10).trim());//如果接收到的指令为"MousePressed",//则在自己的电脑中执行"按下鼠标左键"的动作指令if(command.equalsIgnoreCase("MousePressed")){robot.mousePress(button);}//如果接收到的指令为"MouseReleased",//则在自己的电脑中执行"释放鼠标左键"的动作指令elseif(command.equalsIgnoreCase("MouseReleased")){robot.mouseRelease(button);}//如果接收到的指令为"MouseMoved",//则在自己的电脑中执行"移动鼠标"的动作指令elseif(command.equalsIgnoreCase("MouseMoved")){robot.mouseMove(x,y);}//如果接收到的指令为"MousePressed",//则在自己的电脑中执行"滚动鼠标滚轮"的动作指令elseif(command.equalsIgnoreCase("MouseWheel")){robot.mouseWheel(button);}//如果接收到的指令为"KeyPressed", //则在自己的电脑中执行"按下按键"的动作指令elseif(command.equalsIgnoreCase("KeyPressed")){robot.keyPress(x);}//如果接收到的指令为"KeyReleased",//则在自己的电脑中执行"释放按键"的动作指令elseif(command.equalsIgnoreCase("KeyReleased")){robot.keyRelease(x);5功能测试5.1主控端功能测试5.1.1对基本操作功能的测试输入IP地址范围和端口号进入系统,如果少输或输入错误,系统会提示“输入错误选择重新输入”。输入要求的发送频率且不能超出最大频率,否则系统会自动使用默认值。5.1.2扫描局域网中可连主机的测试在主控端中输入要控制电脑的IP地址范围,并在信息窗口显示在这IP地址范围内扫描能够控制的远程电脑,并把可控制电脑端的信息发送到主控端上显示出来。5.1.3远程控制功能的测试开启远程控制功能,在主控端上移动鼠标,按下主控端的鼠标按键,远程主机的鼠标会执行相应的操作。在主控端上进行控制被控端下载文件和上传文件,在远程监控的主控端上能显示控制端的图像并进行关机操作。5.2被控端功能测试5.2.1对连接密码的验证测试 连接建立时,在主控端输入密码,被控端接收读取密码,如果密码错误,被控端将断开与主控端的连接。如果输入密码正确就正常运行远程监控系统程序。5.2.2创建存储密码文件的测试被控端程序初次运行时,会在当前目录下创建用于存储密码的文本文件。运行程序后,打开程序所在目录,创建的文本文件确实存在。5.3测试结果经过测试,系统能够正常地运行,该程序能很好地完成对于远程计算机的监控,符合初期的系统设计要求,也可以满足用户对该程序的基本需求。 6论文总结经过毕业设计,发现要设计开发出一个好的软件是一个非常复杂的工程,不但要掌握并熟悉地运用开发语言和开发平台,还要对你要开发的产品进行非常细致的分析。经过这一次对于软件的开发对于我掌握java语言有了明显的进步,也能够更加灵活熟练字运用java语言来解决问题。也使我醒悟到要在短时间内完成一个复杂的程序系统,一定要有较高的知识水平,还要有大量的实践经验作为基础才能成功。在远程监控系统软件中,经过努力在不断的修改中,本系统满足了前面提出的各种需求-远程监控电脑桌面、远程控制电脑鼠标和键盘、远程控制电脑上传和下载文件、远程控制计算机、远程控制电脑开关机。当然在这系统中还是纯在很多不足之处,需要多次运行实用才能发现。这一次的别业设计给了我一次不同的经历,使我认识到以后写程序之前一定要对要写的程序进行深入了解并规划才能很好地有序的完成任务。 参考文献[1](韩)徐明浩著,武传海译.Java编程基础、应用与实例[M].北京:人民邮电出版社,2005.10[2]耿祥义,张跃平.JAVA2(第二版)[M].北京:清华大学出版社,2004。[3]BruceEckel.JAVA编程思想[M].机械工业出版社,2005。[4]张海藩.软件工程导论[M].北京:清华大学出版社,2004。[5]李钟尉,周小彤,陈丹丹,等.java从入门到精通(第2版):清华大学出版社(2010-07出版)。[6]杨明福.计算机网络原理[M].北京:经济科学出版社,2007.6[7]李鲁群.用JavaRobot对象实现服务器屏幕远程监视[EB].http://gceclub.sun.com.cn/yuanchuang/week-6/robot.html[8]刘光宝,TCP/IP应用程序的通信连接模式,http://www.ibm.com/developerworks/cn/aix/library/0807_liugb_tcpip/[9]埃史尔,陈昊鹏.java编程思想(第4版).机械工业出版社(2007-06出版)。[10]RogerS.Pressmen.软件工程实践者的研究方法[M].机械工业出版社,2004。[11]辛运帏,饶一梅,马素霞.java程序设计.清华大学出版社(2006-08出版)。[12]JoshuaBloch,杨春花,俞黎敏.Effectivejava中文版.机械工业出版社(2009-01出版).[13]卡尔弗特(KennethL.Calvert),多纳霍(MichaelJ.Donahoo),周恒民.javaTCP/IPSocket编程(原书第2版).机械工业出版社(2009-01出版)。[14]孙卫琴.java面向对象编程.电子工业出版社(2006-07出版)。[15]吴亚峰,苏亚光.30天学通Java项目案例开发(附DVD光盘1张).电子工业出版社(2009-07出版)。[16]曲培新.Java项目开发案例精粹.电子工业出版社(2010-06出版)。[17]哈诺德,Java网络编程(第3版).中国电力出版社(2005-11出版)。[18]IanF.Darwin,关丽荣,张晓坤.Java经典实例(第2版).中国电力出版社(2009-02出版)。[19]布洛克(JoshuaBloch),加夫特(NealGafter),陈昊鹏.Java解惑.人民邮电出版社 (2010-12出版)。[20]林信良,JavaJDK6学习笔记(附光盘).清华大学出版社(2007-04出版)。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭