基于JAVA的远程控制系统毕业论文(毕业论文11000字)

3997
    


来源:
Licence:
联系:
分类:
平台:
环境:
大小:
更新:
标签:
联系方式 :
免费下载 ×

下载APP,支持永久资源免费下载

限免产品服务请联系qq:1585269081

下载APP
免费下载 ×

下载APP,支持永久资源免费下载

下载APP 免费下载
下载 ×

下载APP,资源永久免费


如果出现不能下载的情况,请联系站长,联系方式在下方。

免费下载 ×

下载论文助手APP,资源永久免费

免费获取

如果你已经登录仍然出现不能下载的情况,请【点击刷新】本页面或者联系站长


.Lrk152 { display:none; } 基于 JAVA 的远程 控制系统 毕业论文 ( 毕业论文 11000字) 【摘要】 当今社会的各种数据普遍储存在计算机上,但走在哪里都带着计算机、硬盘等显然太过不便,因此可以通过网络远程使用数据的远程控制软件应运而生

本文介绍了基于JAVA实现的远程控制系统,叙述了利用JAVA实现远程桌面监控系统的分析、设计和开发的全部过程

首先简单介绍了远程桌面监控系统的应用前景以及面临问题,介绍了系统的总体目标以及用户需求,设计了系统的基本框架和各个模块的功能;然后主要介绍了各个功能模块的具体实现步骤,并对模块中用到的类、构造函数和主要方法做了简单的说明,最后给出了测试方法和结果,对系统的优缺点进行了总结

本远程控制系统,是利用JAVA语言跨平台的特性以及其优秀的网络编程环境,实现了不同硬件环境和操作系统的计算机之间的远程桌面控制,本系统可以让本地计算机通过网络访问不同的远程计算机,并对其进行操作,对远程主机的监控主要包括:实时监控桌面状态、远程文件传输、控制鼠标、键盘的基本操作

本系统开发工具采用Eclipse SDK 3.7.2

主要涉及的技术有JAVA Socket技术、JAVA Robot技术,JAVA网络编程

早期的远程控制往往指在局域网中的远程控制而言,随着互联网的普及和技术革新,现在的远程控制往往指互联网中的远程控制

当操作者使用主控端电脑控制被控端电脑时,就如同坐在被控端电脑的屏幕前一样,可以启动被控端电脑的应用程序,可以使用或窃取被控端电脑的文件资料,甚至可以利用被控端电脑的外部打印设备(打印机)和通信设备(调制解调器或者专线等)来进行打印和访问外网和内网,就像利用遥控器遥控电视的音量、变换频道或者开关电视机一样

不过,有一个概念需要明确,那就是主控端电脑只是将键盘和鼠标的指令传送给远程电脑,同时将被控端电脑的屏幕画面通过通信线路回传过来

也就是说,控制被控端电脑进行操作似乎是在眼前的电脑上进行的,实质是在远程的电脑中实现的,不论打开文件,还是上网浏览、下载等都是存储在远程的被控端电脑中的

第一部分 绪  论 1.1    研究背景 随着网络的普及人们已经可以足不出户的工作和学习,SOHO越来越受到人们的青睐

通过网络人们可以控制放在面前的计算机,也可以远程控制无法直接触摸到的计算机,缩短了机器与人之间的空间距离,节省了很多精力

远程控制在网络管理,远程协作,远程办公等计算机领域都有着广泛的应用,它克服了由于地域性的差异而带来的操作中的不便性,使得网络的效率得到了更大的发挥

JAVA语言的跨平台特性以及其极为优秀的网络功能,为实现不同硬件环境和操作系统的计算机相互远程桌面管理提供了便利的开发环境

现在有很多公司、企事业单位都建立了自己的内部网络,对于维护人员来说,希望能够通过网络实时的监控联网计算机的运行情况、希望根据需要通过网络随时改变联网计算机的设置,希望对出现故障的计算机能够通过网络及时排除故障

对于管理人员来说,希望通过网络随时了解员工的工作进展情况和规范员工对计算机的使用以及解决工作中存在的问题

为此,希望编写一个适合于局域网的桌面监控程序以满足上述需求

本系统就在这样的需求环境下孕育而生了

远程控制技术是指用本地计算机通过网络去控制一台或多台远程主机的技术

当用户使用本地计算机控制远程主机时,就如同坐在远程主机的屏幕前一样,可以启动远程主机的应用程序,可以使用远程主机的文件资料,甚至可以利用远程主机的外部打印设备和通信设备来进行打印和访问互联网

不过,在远程主机中所运行的程序、所打开的文件、所下载的文档都是存储在远程主机中的,尽管这些操作似乎是在眼前的电脑上进行的,但事实上主控端端电脑只是将键盘和鼠标的指令传送给远程主机,同时将被主控端电脑的屏幕画面通过通信线路传过来,从而达到控制与被控制的目的

它的控制的过程是在本地计算机上执行客户端程序,向远程主机中的服务端程序发出信号,建立一个特殊的远程服务,然后通过这个远程服务,使用各种远程控制功能发送远程控制命令,控制远程主机中的各种应用程序运行

通过远程控制系统,可以进行很多方面的远程控制,包括获取远程主机屏幕图像;打开、关闭远程主机的任意目录;管理远程主机的文件和文件夹;关闭或者重新启动远程主机中的操作系统;通过远程主机上、下载文件和捕获音频、视频信号等

远程控制系统也适合一对多模式,可以使用本地计算机控制多个远程主机,管理者可以在本地计算机上同时查看多个员工的工作进展情况,及早发现工作中的差错以便及时改正

特别是对于网络管理员,技术服务人员来说,远程控制提供了一个便捷,高效的手段

但是所有这些与网络环境有很大的关系

网速过慢是很多网络程序的瓶颈,远程控制也不例外

获取被控端电脑屏幕的过程,实际上就是服务器端传输一副屏幕图片到客服端的过程,这个过程需要传输大量的数据,如何对屏幕图片数据进行压缩?多长时间发送一次屏幕图片数据?是不是每次都需要发送整个屏幕的数据?这些都是远程控制必须面对的问题

远程控制系统存在着比较严重的安全隐患

容易受到黑客的攻击和非法入侵

这就需要对软件在设计方面做出安全考虑

1.2      国内外研究现状 伴随着Internet技术的迅速发展,远程监控技术愈来愈完善

起初远程监控功能用于PC用户在离开办公室的时候能访问台式PC硬盘中的信息,甚至可以通过其台式PC访问企业网络资源

今天,许多企业和增值分销商正在把远程监控功能作为有效的技术支持工具,如网络管理员采用具有该功能的软件对局域网进行管理,出差在外的商务人员可以随时提取公司数据和资料

而远程监控技术最显著的表现是将远程监控技术应用于工业控制方面

如目前,基于因特网的远程控制国内外都有不同程度的研究

相对来说,由于西方国家在信息技术和计算机控制技术的发展上的优势,他们在研究基于因特网的远程控制方面相对早一些,而且有些公司有相关的初级产品问世

国内由于因特网的飞速发展,近几年也开始积极的研究

国内外在基于因特网的远程机器人控制方面的研究相对其它领域要多一些

例如美国伯克立大学研制的是一个通过因特网远程控制的种植花草的工业机器人手臂

用户通过机器人一手臂上的摄像机所传输的图像,对这个花园内进行简单的操作,如种植花草、浇水等

国内的哈尔滨工业大学也在研制基于因特网控制的机器人

这些基于因特网的机器人控制系统普遍都采用了客户/服务器网络模型,现场采用摄像机来监视,并通过网络发出控制命令

当前,由于网络基础设施还不够完善,所以监视图像由于数据量大,其传输时间过长

即使是采用了数据压缩技术,也仍然有很大的数据量需要传输,因而由此产生的远程控制时间延迟也必然很大

再有这类系统在处理上由于时间延迟影响现场控制系统不稳定时,仍然采用的执行一等待一执行一等待的单步执行流程,现场设备运行效率相当低下

1.3      论文的研究内容及结构安排 本文重点探讨了基于JAVA的远程控制系统的设计目标和实现过程,介绍了系统的总体结构与设计,还给出了系统的具体实现,并对系统总体实施情况进行了总结,最后对未来发展进行了展望

总共分为七部分,总体结构为: 第一部分:介绍了本文的研究背景、国内外研究现状、研究目的及意义、研究内容

第二部分:介绍了本系统的需求分析,分析了系统需要解决的主要问题客户端,服务端的区别

第三部分:介绍系统涉及到实现的相关技术,包括JAVA软件开发、JAVA Robot技术、Socket技术等

第四部分:介绍了基于JAVA的远程控制系统的总体设计,包括系统设计思路、系统实现分析、系统功能设计等

第五部分:介绍了基于JAVA的远程控制系统的系统具体实现,并给出相应功能的截图

第六部分:对系统进行单机测试与联机测试,包括系统测试截图,最后给予总结

第二部分 需求分析 2.1 概述 所谓需求分析,我们首先要了解我们需要解决什么问题,这个问题要怎么解决才合理,也就是我们开发应用系统解决什么的问题

客户是上帝,需求分析就是要了解客户的需求,同时也是应用系统需要解决的问题的集合

2.2 功能需求 2.2.1 主控端 1. 对被控主机的桌面进行实时监视,同时支持屏幕截图及传输; 2. 支持对被控主机进行远程控制,比如修改被主控端的系统配置文件,可以对远程主机进行关机和重新启动的操作,支持对被控主机进行键盘及鼠标的操作等; 3. 支持通过安全的用户名及密码远程登录被控主机; 4. 支持对被控主机的文件资源进行复制、粘贴、共享等操作

主控端实时监视远程主机的桌面

被控端及时响应主控端的控制请求

2. 安全性

被控端只能被一台主机控制

连接时需要身份验证

3. 网络通信量

尽量减少网络上传送的数据量,节省网络资源

4. 与平台无关性

适用于运行不同桌面操作系统的计算机; 5. 界面友好、操作简单; 第三部分    相关技术与原理介绍 3.1 JAVA简介 Java语言对传统的单机计算模型提出了新的挑战,是一种新的计算概念

首先,它是一种简单、面向对象、不依赖于机器的结构、具有可移植性、高效性、安全性、并且提供了并发的机制、具有很高性能的程序设计语言;其次,它最大限度地利用了网络;此外,Java还提供了丰富的类库,程序设计者可以方便地建立自己的系统

Java语言的设计使其可以适合于一个不断发展的环境:在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行; 可以通过接口来支持多重继承,较之于严格的类继承具有更灵活的方式和扩展性

它是实现远程桌面连接的关键功能,可将使编程复杂度大大简化

Robot类提供的实用键盘鼠标控制功能主要列举如下: BufferedImagecreateScreenCapture(Rectangle screenRect)createScreenCapture方法提供了类似于键盘上的PrintScreen 键的功能,能够将指定矩形区域内的屏幕像素拷贝下来产生一个BufferedImage

将该方法应用在图形程序中,或是用它来实现远端屏幕传输,即可实现远端电脑监控程序等; void delay(int ms)该方法可将当前的程序(thread)休眠(sleep)若干毫秒(ms)

3.3 JAVA Socket技术 网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket

Socket通常用来实现客户方和服务方的连接

Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定

但是,Socket所支持的协议种类也不光TCP/IP一种,因此两者之间是没有必然联系的

在Java环境下,Socket编程主要是指基于TCP/IP协议的网络编程

3.3.1 Socket通讯的过程 Server端Listen(监听)某个端口是否有连接请求,Client端向Server 端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息

一个连接就建立起来了

Server端和Client 端都可以通过Send,Write等方法与对方通信

这是两个封装得非常好的类,使用很方便

其构造方法如下: Socket(InetAddress address,int port); Socket(InetAddress address,int port, boolean stream); Socket(String host,int prot); Socket(String host,int prot,boolean stream); Socket(SocketImpl impl) Socket(String host,int port,InetAddress localAddr,int localPort) Socket(InetAddress address,int port,InetAddress localAddr,int localPort) ServerSocket(int port); ServerSocket(int port,int backlog); ServerSocket(int port,int backlog,InetAddress bindAddr) 其中address、host和port分别是双向连接中另一方的IP地址、主机名和端 口号,stream指明socket是流socket还是数据报socket,localPort表示本地主机的端口号,localAddr和bindAddr是本地机器的地址(ServerSocket的主机地址),impl是socket的父类,既可以用来创建serverSocket又可以用来创建Socket.count则表示服务端所能支持的最大连接数

每一个端口提供一种特定的服务,只有给出正确的端口,才能获得相应的服务

0~1023的端口号为系统所保留,例如http服务的端口号为80,telnet服务的端口号为21,ftp服务的端口号为23,所以我们在选择端口号时,最好选择一个大于1023的数以防止发生冲突

在创建socket时如果发生错误,将产生IOException,在程序中必须对之作出处理

所以在创建Socket或ServerSocket是必须捕获或抛出例外

图3-3-1 socket连接示意图 3.4 远程控制的原理 远程控制的基本原理是当系统用户连接到网络上,通过远程访问的主控端程序发送主控端身份验证信息和与远程主机连接的要求,远程主机的被控端程序验证主控端身份,如果验证通过,就与主控端建立连接,并向主控端发送验证通过和已建立连接的信息

这时,主控端便可通过主控端程序监控或向远程主机发送要执行的指令,而被控端程序则执行这些指令,并把键盘、鼠标指令和屏幕刷新传给主控端程序,主控端程序通过处理把主机屏幕等信息显示给用户看,使得用户就像亲自在远程主机上操作一样

如果没有通过身份验证,就不与主控端建立连接,用户也就不能远程控制主机了

远程控制软件大都使用C/S 模式

使用前需要将主控端程序安装到主控端计算机上,将被控端程序安装到被控端计算机上

它的控制过程一般是先在主控端上执行主控端程序,像一个普通客户一样向被控端计算机发出信号,建立一个特殊的远程服务,然后通过这个远程服务,使用各种远程控制功能发送远程控制命令,控制被控端计算机中各种应用程序的运行

这种远程控制方式称为基于远程服务的远程控制

在使用前需要将客户端程序安装到主控端计算机上,将服务器端程序安装到被控端计算机上

服务器端主要是监听、执行客户端发来的请求或指示,如键盘按键、鼠标的动作等,同时还要定期发送屏幕位图信息到客户端

而客户端则负责把接收到的屏幕位图信息显示在客户端的窗体上并相应的把客户端的键盘、鼠标动作发送给服务器端应用程序

经过需求阶段的分析知道,本系统属于典型的C/S结构的系统,由主控端和被控端两个部分构成

该系统中采用了Java提供的几种套接字中的流套接字

因为流套接字依靠TCP协议来保证信息正确到达目的地,一旦IP包在网络传输中丢失或者发生错误,作为接受方的TCP将联系发送方TCP重新发送这个IP包

主控端程序需要不断地接收被控端程序发送的屏幕图像,然后在主控端窗口中显示,并捕捉主控端的鼠标和键盘事件,然后传送到被控端

系统基本框架结构图: 图4-1-1 系统基本框架结构图 4.2    系统功能设计 系统总体设计的目的是要根据系统分析的要求和组织的实际情况来对新系统的总体结构形式和可以利用的资源进行大致设计,它是一种宏观、总体上的设计和规划

图4-2-1 系统功能示意图 第五部分    基于JAVA的远程控制系统的实现 5.1    被控端实现 被控端程序是远程控制软件的主体

软件的具体功能都是在被主控端实现的,主控端只负责传送要执行的命令和显示返回的结果

而几乎所有的操作控制都是在被控端本地实现的

由于服务端基本不涉及界面操作,因此,其界面就可以做得相对简单些了

如果此时出现错误,程序将抛出IOException异常对象;否则将创建ServerSocket 对象并开始准备接收连接请求

5.1.2 等待客户端请求 建立远程连接接下来服务程序进入无限循环之中

无限循环从调用ServerSocket的accept()方法开始,在调用开始后accept()方法将导致调用线程阻塞,直到接收到来自客户端的连接建立

连接建立后accept()返回一个最近创建的Socket对象,其中绑定了客户程序的IP地址或端口号

5.1.3 屏幕控制及传输功能实现 5.1.3.1 捕获图像 //获取屏幕图像 Robot类的重要方法有createScreenCapture(Rect-angle screenRect)、mousePress(int buttons)、mouseRe-lease(int buttons)、mouseMove(int x, int y)、mouseWheel(int wheelAmt)、keyPress (int keycode)和keyRelease(int keycode) , 功能分别是捕获屏幕图像、按下鼠标键、松开鼠标键、移动鼠标键、旋转鼠标滚动轮、按下一特定键和松开一特定键

因为UDP 协议的数据包最大长度是64KB,如果屏幕图像的压缩率设置得过小,屏幕图像压缩后的数据量超过了64KB,那么,使用UDP协议就有可能造成其他问题

一般地,屏幕图像的压缩率设置得不宜太大(设置压缩后的清晰度要≥0.5),否则,传到客户端的屏幕图像会不够清晰,那么又因为UDP传输大小的限制,所以,一般可以选择使用TCP协议

首先利用java的工具集ToolKit中getScreenSize()函数得到当前显示器的尺寸,把它作为入口参数赋给Robot类的函数BufferedImage.createScreenCapture(Rectangle screenRect),实现拷贝当前服务器桌面的功能

获得图像后,如果网络带宽受限,还可利用java提供的JPEGCodec 类对捕捉到得桌面图像进行压缩,压缩过后数据量可成数十倍的降低

但压缩需要大量消耗服务器的主机资源,同时对桌面内容的监控产生滞后,在服务器性能允许的前提下,不推荐使用此压缩功能

5.1.3.4 远程控制功能实现 对于远程控制功能的实现,主要通过对鼠标及键盘消息进行捕获处理实现,首先由客户端(主控端)进行鼠标及键盘操作,转换为消息指令发送到被主控端,由被主控端对消息指令进行解析并转换为本地键盘或鼠标动作,从而实现对被控端进行控制操作,因此远程控制功能的关键在于鼠标及键盘消息的控制及操作处理

被主控端程序接收来自主控端的鼠标和键盘操作指令后,可以根据具体指令执行Robot类的相应方法即可实现模拟操作

5.1.4 建立监听套接字接口 复原客户端操作最后,服务器还需要建立一个监听套接字端口,用来接受客户端传来的控制信息流,并对信息流进行反序列化操作,将其恢复成操作对象实例,根据操作对象中的信息,利用Robot类自动执行传自客户端的操作

5.1.6 文件共享功能实现 首先通过主控端发送鼠标及键盘的操作命令来控制被控端,实现文件资源的复制、传输、共享

当被控端收到控制命令后可以打开、关闭目标电脑的任意目录并实现资源共享

5.2 主控端实现 主控端实现过程如下: 图5-2-1 客户端界面 5.2.1 远程连接 用户通过IP地址建立连接,传送至服务器,当服务器验证通过后,返回给客户端一个“ok”信息

用户获准连接后,可选择在客户端显示的窗口尺寸, 并与服务器监听套接字连接,连接被接受后,服务器与客户端的连接流建立

5.2.2 远程桌面 接收服务器屏幕信息,客户端从服务器端获得其屏幕图像后,利用窗口所包含的java.awt.graphic类的对象,通过drawImage函数将服务桌面显示在客户端窗口上

5.2.3 远程控制 记录客户端操作事件及位置,发送至服务器端当客户端与服务器段连接上, 并持续、稳定获得服务器桌面图像流的时候,用户可在客户端显示服务器内容的区域内进行操作,这时客户端程序将截获这些操作,利用Java的序列化技术,将这些操作的信息(例如鼠标单击、双击、哪个键、键盘事件,以及光标位置等等)封装为一个实现了java.io.serializable接口的类的对象实例

发送用户操作的信息至服务器端,并获取操作结果将该序列化后的对象实例通过网络数据流传送至服务器端,等待服务器将处理后的图像回传给客户端

第六部分 系统测试 图6-1 本机测试——主界面:ip地址使用127.0.0.1实现本地连接测试 图6-2 联机测试——主界面:联机测试等待连接 图6-3 联机测试——连接成功,远程桌面图形:这是在局域网中的连接测试 图6-4 联机测试——选择本地共享文件 图6-5 联机测试——本地文件共享成功 图6-6 联机测试——选择远程文件保存路径 图6-7 联机测试——远程文件保存成功 第七部分    结束语 7.1    总结 通过几个月的学习和研究工作,终于有了结果

在此过程中,我深深体会到要开发本系统并不容易,不仅要有扎实的基本功,而且还需要有缜密的思维结合各方面的知识

每做一步都要明白下一步该怎么做,还要明白这步操作是否会对其它操作产生影响,也就是说要有全局的概念,要具备严密的逻辑思维能力

通过此次的设计,我有如下体会:要设计和实现一个基于JAVA的远程控制系统是一项重大的工程,首先我们应该明确整个系统的流程框架图、各功能模块结构图,对整个系统的流程以及各个部分的功能进行详细的分析以及认真的规划;再次就是进行下一阶段的编码工作,在编码过程中一定要注意代码编写时的合理性,可读性以及易修改性;那么我们就必须具备扎实的编程基础,强调一点是在编码过程中一定要细心,这样将避免许多不必要的麻烦

另外我们还应该注意系统的功能模块可扩展性等方面的问题,以后可以增添模块功能;最后就是系统测试与维护的过程

在不断的测试和使用中会遇到各种各样的问题,我们应该保持平衡的心态出处理这些问题,切忌心浮气躁;这就需要测试者耐心的去解决问题,使系统各方面更加完善;由于时间等条件的限制,在此问题上本系统还有待改进

此次的开发C/S的远程控制软件并没有发挥出Java的长项,在Web方向上的探索失败非常可惜,因为B/S的便捷性在远程控制方面可能各位具有优势,是大势所趋,因此今后有机会应该向B/S方向努力

通过此次下面的分析和设计过程,我充分认识到系统的整个研发过程,对于我以后的工作和生活都是有帮助的,本人将继续不断的努力


免费下载 ×

下载APP,支持永久资源免费下载

下载APP 免费下载
温馨提示
请用电脑打开本网页,即可以免费获取你想要的了。
扫描加我微信 ×

演示

×
登录 ×


下载 ×
论文助手网
论文助手,最开放的学术期刊平台
				暂无来源信息			 
回复
来来来,吐槽点啥吧

作者联系方式

×

向作者索要->