APP下载

基于JAVA的远程控制系统的设计与实现

2020-01-06杜兴华

银幕内外 2020年8期
关键词:远程控制

杜兴华

摘要:遠程控制系统JPCAnyWhere采用主控端/被控端的设计结构,通过对系统事件队列进行Socket通信的方法传递事件。通过Java JDK中的Robot对象,该对象可以完成屏幕图像截取,控制鼠标,键盘,如此便可以轻而易举地实现远程计算机的控制。远程控制系统JPCAnyWhere通过在主控端输入被控端的IP地址进行连接识别,在被控端通过Robot截取桌面图像,通过Socket通信传给主控端,同时应用Java多线程的控制方法传送、接受图像和各种事件。本文对远程控制系统JPCAnyWhere进行了介绍,详细分析了其设计原理,主控端和被控端的设计流程,并测试了JPCAnyWhere的各项功能。

关键词:Java;远程控制;Robot类;Socket;多线程

一、计算机远程控制相关技术综述

远程控制技术基于Java的远程控制系统的设计与实现,电脑中的远程控制技术始于DOS时代,当时由于技术上没有什么大的变化,网络不发达,市场没有更高的要求,所以远程控制技术没有引起更多人的注意。但是,随着网络的高度发展,电脑的管理及技术支持的需要,远程操作及控制技术越来越引起人们的关注。远程控制一般支持下面的这些网络方式:LAN、WAN、拨号方式、互联网方式。此外,有的远程控制软件还支持通过串口、并口、红外端口来对远程机进行控制。传统的远程控制软件一般使用NETBEUI、NETBIOS、IPX/SPX、TCP/IP等协议来实现远程控制,随着网络技术的发展,对远程控制软件提供通过Web页面以Java技术来控制远程电脑的需求不断增多,这样可以实现不同操作系统下的远程控制。

二、系统分析

对于具体功能,用户要求实现对被控端进行各种鼠标和键盘操作,包括获取目标电脑屏幕图像、远程关机、打开应用程序等。主控端能够显示被控端桌面,并且把基于被控端图像上的键盘,鼠标事件通过Socket通信传给被控端;被控端能够响应主控端的鼠标键盘事件。UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据包。在OSI模型中,在第四层——传输层,处于IP协议的上一层。 UDP有不提供数据报分组、组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

用户数据报协议(UDP)是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 UDP 协议基本上是 IP 协议与上层协议的接口。 UDP 协议适用端口分别运行在同一台设备上的多个应用程序。

协议结构:

Source Port—16位。源端口是可选字段。当使用时,它表示发送程序的端口,同时它还被认为是没有其它信息的情况下需要被寻址的答复端口。如果不使用,设置值为0。

Destination Port—16位。目标端口在特殊因特网目标地址的情况下具有意义。

Length—16位。该用户数据报的八位长度,包括协议头和数据。长度最小值为8。

Checksum—16位。IP 协议头、UDP 协议头和数据位,最后用0填补的信息假协议头总和。如果必要的话,可以由两个八位复合而成。

Data—包含上层数据信息。

UDP协议使用IP层提供的服务把从应用层得到的数据从一台主机的某个应用程序传给网络上另一台主机上的某一个应用程序。

在Java语言中,线程有如下特点:

§ 在一个程序中而言,主线程的执行位置就是main。而其他线程执行的位置,程序员是可以自定义的。值得注意的是对Applet也是一样。

§ 每个线程执行其代码的方式都是一次顺序执行的。

§ 一个线程执行其代码是与其他线程独立开来的。如果诸线程之间又相互协作的话,就必须采用一定的交互机制。

§ 前面已经说过,线程是共享地址空间的,如果控制不当,这里很有可能出现死锁。

三、系统总体设计

系统的实现原理如下:

(1)被控端通过Robot截取桌面图像通过socket通信传给主控端。

(2)主控端显示被控端桌面,并且把基于被控端图像上的键盘,鼠标事件通过socket通信传给被控端。

(3)被控端响应主控端的鼠标键盘事件。

在系统设计过程中,将本着先进性、实用性、开放性、适应性、可扩展性、便利性、可靠性、安全性、经济性等原则。

远程控制系统100%的自主开发,不利用第三方组件,为系统的开放性、可扩展性、可靠性提供有力保证。

于Java的远程控制系统JPCAnyWhere和其他远程控制系统一样具有网络计算的功能,他们的不同之处就在于:基于Java的远程控制系统JPCAnyWhere的设计重点是“与平台无关”的特性,因此,我们的设计目标就是尽可能兼容各类计算机硬件和各种操作系统。在计算机硬件系统方面有大型机、工作站和 PC、Mac 等,在操作系统方面有 Windows 系列、Unix 系列、Linux 系列以及 Sun(R)Solaries系列等系统。

四、系统详细设计与实现

主控端模块的类及其作用,在确定软件的包结构后,需要进一步确定软件的类与接口。远程控制系统JPCAnyWhere中各部分相对独立,对于公共定义的各环境变量和线程管理接口等子模块,可通过直接引用包含有该子模块的类或接口来实现。

根据本远程控制系统的实现方法。

五、结论

本课题参照现有的远程控制软件,开发了一个基于Java的远程控制系统JPCAnyWhere。远程控制系统JPCAnyWhere在Eclipse3.2平台上由Java语言开发,其结构采用主控端/被控端的设计结构,通过对系统事件队列进行Socket通信的方法传递事件。通过Java JDK中的Robot对象,该对象可以完成屏幕图像截取操作,控制鼠标、键盘,如此便可以轻而易举地实现远程计算机的控制。

远程控制系统JPCAnyWhere通过在主控端输入被控端的IP地址进行连接识别,在被控端通过Robot截取桌面图像,通过Socket通信传给主控端,同时应用Java多线程的控制方法传送、接受图像和各种事件。JPCAnyWhere的设计与实现中存在一些问题。例如在被控端主机上播放视频时,在主控端传输过来的图像无法显示视频信息;JPCAnyWhere支持的功能不是很丰富等。这些问题的出现,使JPCAnyWhere的应用范围受到限制。在下一阶段的研究中,对课题的改进主要包括两个方面,分别是对JPCAnyWhere功能的扩充,以及解决在实现过程中遇到的一些关键问题,包括视频图像的截取和传输问题等等。

猜你喜欢

远程控制
水冷发射机冷却系统故障分析及解决方案
基于GSM的远程控制系统