搜索
您的当前位置:首页正文

远程控制系统

来源:好走旅游网
摘 要

随着现今社会计算机的广泛普及以及网络的快速发展给远程控制系统带来了广阔的用武之地,人们可以通过简单的终端机完全的控制网络另一端的被控机,从而完成强大的控制功能,获取被控机的任何信息,这种方式被称之为远程控制。

使用远程控制技术,可以对远程计算机进行操作,就像控制本地计算机一样。这种技术在远程设备(软件)的维护、监控与故障诊断等方面有着广泛的应用前景。远程技术支持将占据技术支持的主流:远程教学和培训也将快速发展。企业规模将迅速扩大,所有这些发展都为远程控制软件提供了一个广阔的天地。

简单远程控制系统由主控端和被控端两部分组成。主控端用于实施各种对连网计算机的监控操作,被控端对于接收到的数据进行分析,解释并执行。系统主要可以实现获取被控端信息、被控端系统控制、消息发送和被控端界面控制的监控功能。

本文对远程控制系统原理和主要相关技术作了简单介绍,在进行的需求分析之后,详细描述了本系统的主控端和被控端的设计与实现,最后表格形式给出测试结果。

关键词:远程控制;C/S模式;套接字;信息安全

Abstract

With the wide use of computer and the rapid development of network, the remote control system is used far and wide. Just through simple manipulate of the terminal, people can completely control the computer on the other side, including obtain the system information of the computer, and implement powerful functions. It is so-called remote control.

Using the technology of remote control, the remote computer can be controlled as conveniently as the local one. The technology of remote control can be very useful in the maintenance, monitoring and malfunction diagnosis of remote computers. Remote control technique will be a tide of technique support; distance education and train will also be developing in a high speed. The scope of enterprises will extend at a very fast speed in the same way. These all development provides a wide space for remote control software.

The simple remote control system consists of two parts including controlling terminal and controlled terminal. We can monitor the controlled terminal and implement some operation about controlling the controlled terminal on the controlling monitor. The controlled terminal is used for analyzing, explaining and implement the received data. The system can implement the function of getting the information of controlled terminal, control controlled terminal, sending messages, controlling the screen of the controlled computer and so on.

The paper simply introduces the theory of remote control and the main correlative technology. After the analysis, it describes the design and implement of the controlling terminal and the function of getting the information of controlled terminal. At last, it shows the result in form of figures.

Key words: Remote control; Client/Server mode; socket;Information

security

目 录

1引言 .................................................. 3

1.1 本课题的研究背景和意义 .......................... 5 1.2 国内外研究现状 .................................. 2 1.3 本课题的主要研究的内容 .......................... 3 1.4 作者的主要工作 .................................. 3 2远程控制系统相关理论研究 .............................. 4

2.1 远程控制系统概述 ................................ 4 2.1.1 远程控制软件的原理 ............................ 4 2.1.2 远程控制技术的应用 .......................... 5 2.2 远程控制软件卡发环境 ............................ 6 2.3 客户/服务器模式 ................................. 6 2.4 Socket的引入 .................................... 7 2.5 英特网协议 ...................................... 7 2.6 主要控件介绍 .................................... 8 2.6.1 Winsock控件 ................................... 8 2.6.2 Timer控件介绍 ................................. 9 3远程控制系统总体结构 .................................. 9

3.1 远程控制系统的概貌 .............................. 9 3.2 各模块功能要求 .................................. 9 3.3 性能要求 ....................................... 10 3.4 运行要求 ....................................... 10 3.5 数据要求 ....................................... 10 3.6 用户系统描述 ................................... 10 4 远程控制系统的功能模块的设计 ......................... 10

4.1 远程控制系统的主体设计 ......................... 10 4.2 远程控制系统的功能模块 ......................... 12 4.3 主控端设计思路 ................................. 12 5 远程控制系统功能模块的编程及实现 ..................... 13

5.1 远程控制系统的系统功能的实现 ................... 13 5.1.1 主控端界面 ................................. 14 5.2 远程控制的连接功能实现 ......................... 16

5.3 远程控制的系统控制的实现 ....................... 18 5.4 远程控制的向被控端发送消息的实现 ............... 20 5.5 远程控制的被控端界面控制的实现 ................. 22 5.6 获取被控端信息功能的实现 ....................... 25 5.7 远程控制功能实现流程 ........................... 27 6测试 ................................................. 28

6.1 测试环境 ....................................... 28 6.2 测试过程以及结果 ............................... 29 结 论 ............................................... 31 参考文献 ............................................... 32 致 谢 ............................................... 33

远程控制系统的设计

1引言

1.1 本课题的研究背景和意义

远程控制是在网络上由一台电脑(主控端Remote/客户端)远距离去控制另一台电脑(被控端Host/服务器端)的技术,这里的远程不是字面意思的远距离,一般指通过网络控制远端电脑,不过,大多数时候我们所说的远程控制往往指在局域网中的远程控制而言,远程控制必须通过网络才能进行。主控端和被控端可以是位于同一局域网的同一房间中,也可以是连入Internet的处在任何位置的两台或多台计算机。简单远程控制具有和木马相同的原理,远程控制一旦被居心不良者钻了空子,它的危害甚至比木马还要严重。远程控制具有很多功能,例如远程培训与教学.远程办公.远程管理与维护.远程监控。

电脑中的远程控制技术,始于DOS时代,只不过当时由于技术上没有什么大的变化,网络不发达,市场没有更高的要求,所以远程控制技术没有引起更多人的注意。但是,随着网络的高度发展,电脑的管理及技术支持的需要,远程操作及控制技术越来越引起人们的关注。

随着社会、科技、经济的不断发展,远程控制技术的应用范围也在不断扩展。小到个人的使用,大到整个行业的应用。远程控制技术应用到了我们生活中的各行各业中,从银行、军事、机要部门等特殊行业领域到电业部门、邮政电信部门、商业部门、普通工矿企业、道路交通领域、卫生医疗部门以及宾馆酒店行业等等,其卓越的功能也日益受到各个应用行业的重视和青睐。

远程控制是当前信息技术领域的热点,使用远程控制技术,我们可以克服因地域差异而造成的操作不便,让网络的效率得到更大的发挥。随着技术的发展与网络的普及,目前远程控制技术的应用领域已经相当广泛。我们不仅可以通过远程控制技术管理远端电脑,解决远端电脑的故障,与其他同事通过网络实现远程协作,一起编辑一份文档或者与其他团队成员交流信息,还可以在家里或旅途中使用公司内

部网络的数据与办公设备,实现远程办公。此外,您还能让学员远程连接到您的电脑,实时学习软件的操作,或者与多位远程连接用户进行多点会话。

对于个人用户而言,远程控制技术最具吸引力的莫过于可以遥控远端的电脑。用户可以在家中操作办公室里的电脑,或者在办公室里调用存储在家中的文档,同时还可以当一回专家,通过远程控制计算机为朋友的电脑排忧解难。

1.2 国内外研究现状

起初,使用远程控制软件,是为了让PC用户在离开办公室时能访问其台式PC硬盘中的信息,甚至可以通过其台式PC访问企业网络资源,今天,许多企业和增值分销商正在把远程控制能力作为有效的技术支持工具。很多网络管理员都采用这类软件对局域网进行管理,或者在家中更新自己网站的内容。这类软件对于出差在外的商务人员用处非常大,因为他们可以随时提取自己家里计算机中的数据和资料。远程控制软件在计算机远程教学和培训中也发挥了很大的作用,使身处异地的学生能够与老师进行适时交流,犹如坐在同一间教室。

近年来,黑客技术不断成熟起来,对网络安全造成了极大的威胁。黑客的主要攻击手段之一就是使用远程控制技术,渗透到对方的主机系统里,从而实现远程操作目标主机,其破坏力之大,是绝不容忽视的。目前,远程控制技术也广泛应用在工业领域,可以对远程数据进行实时监控,提高工作效率,进而降低管理成本。

目前,基于因特网的远程控制国内外都有不同程度的研究。相对来说,由于西方国家在信息技术和计算机控制技术的发展上的优势,他们在研究远程控制方面相对早些,而且有些公司有相关的初级产品问世。国内由于因特网的飞速发展,近几年也开始积极的研究。国内外在基于因特网的远程机器人控制方面的研究相对其他领域要多一些。例如美国伯克立大学研制的是一个通过因特网远程控制的种植花草 工业机器人手臂。拥护通过机器人手臂上的摄像机所传输的图像,对这个花园内进行简单的操作。

远程控制一般支持下面的这些网络方式:LAN、WAN、拨号方式、互联网方式。此外,有的远程控制软件还支持通过串口、并口、红外端口来对远程机进行控制(不过,这里说的远程电脑,只能是有限距离范围内的电脑了)。传统的远程控制软件一般使用NETBEUI、

NETBIOS、IPX/SPX、TCP/IP等协议来实现远程控制。这些远程控制系统普遍采用了客户/服务器模型(即C/S模型),可以是一对一的模式,也可以是一对多的模式。现场采用摄像机来监视,并通过网络发出指令。当前,由于网络基础设施还不够完善,所以监视图像由于数据量大,其传输时间过长。即使是采用了数据压缩技术,也仍然有很大的数据量需要传输,因而由此产生的远程控制时间延迟也必然很大。此外,这类系统普遍采用瘦客户/肥服务器的网络模型,监控端的控制操作功能过于简单,都只是发一些简单的指令,而不能实现一些复杂的必要的逻辑处理功能。第三,这类系统在处理上由于时间延迟影响现场控制系统不稳定时,仍然采用的执行-等待-执行-等待的单步执行流程,生产设备运行效率相当低下,第四,大量的采用以图像监视为主的方式,虽然可以使得监控人员更能直观的感受到现场情况,便与监控人员的控制;但是我们应该注意到,有些设备的被监控状态是难以用图像方式表示出来的,比如温度、速度、压力这类精确的数值量;此外有些采用图像传输的数据量也可以采用通过数据传输关键数据以在监控端进行实况模拟图,这样就会减少数据量,而使数据传输速度大大提高。

1.3 本课题的主要研究的内容

远程控制是一个具有重要的研究价值的课题,它在工业,国防等各个方面有着广泛的需求。然而,使用传统的方式,由于成本、技术、维护、传输距离等方面的问题,远程控制并没有很好的推广和利用。先进由于因特网的出现,使得成本低廉的远距离通信轻易的变成了现实。于是采用因特网作为远程控制平台,将远程控制的状态、命令等控制数据和信息通过因特网传输。既减少了开发成本、也增加远程控制的灵活性,人们也不必再为了实现一个临时的远程控制,而需要重建一套远程控制系统。

本课题的研究主要内容主要包括以下几个方面: 1.远程控制系统相关理论研究 2.远程控制系统总体结构

3.远程控制系统的功能模块的设计 4.远程控制系统功能模块的编程实现 1.4 作者的主要工作

本人在系统开发中的具体工作:

1.搜寻与系统开发相关的资料,熟悉VB开发语言。

2.完成主控端界面设计。

3.完成界面按钮与各个功能模块的连接。 4.完成主控端各个模块的界面与程序代码。 5.完成被控端与主控端的连接。 6.完成被控端模块的程序代码。

7.完成整个获取被控端信息功能模块。 8.系统进行调试和测试

9.归并相关系统开发文档,完成毕业论文的撰写。

2 远程控制系统相关理论研究

整个系统采用C/S(服务器/客户机),即被控端/主控端模型设计。主控端程序运行在主控机上,被控端程序运行在受控机上。主控端向被控端发送请求和控制指令,被控端响应请求并执行相应的功能。双方之间是基于TCP/IP协议进行的点对点的通信。编码是利用VB进行编程,使用Visual Basic 6.0进行编译。

2.1 远程控制系统概述

远程控制是在网络上由一台电脑(主控端Remote/客户端)远距离去控制另一台电脑(被控端Host/服务器端)的技术,所有的远程控制系统几乎都可以无一例外的划分为:被控端(主要负责控制过程的实施)、网络、主控端(借助远程数据访问控制过程,进行控制)、三个子系统的构成。这里的远程不是字面意思的远距离,一般指通过网络控制远端电脑,不过,大多数时候我们所说的远程控制往往指在局域网中的远程控制而言。当操作者使用主控电脑所控制被控电脑时,就如同坐在被控电脑的屏幕前一样,可以启动被控电脑的应用程序,可以使用被控电脑的文件资料,甚至可以利用被控电脑的外部打印设备(打印机)和通信设备(调制解调器或者专线等)来进行打印和访问互联网,就像你利用遥控器遥控电视的音量、变换频道或者开关电视机一样。不过,有一个概念需要明确,那就是主控电脑只是将键盘和鼠标的指令传送给远程电脑,同时将被控电脑的屏幕画面通过通信线路回传过来。也就是说,我们控制被控电脑进行操作似乎是在眼前的电脑上进行的,实质是在远程电脑中实现的,不论打开文件,还是上网浏览、下载等都是存储在远程的被控电脑中的。

2. 1. 1 远程控制软件的原理

远程控制软件一般分两个部分:一部分是客户端程序Client,另一部分是服务器端程序Server(或Systry),在使用前需要将客户端程序安装到主控电脑上,将服务器端程序安装到被控电脑上。它的控制的过程一般是先在主控电脑上执行客户端程序,像一个普通的客户一样向被控电脑中的服务器端程序发出信号,建立一个特殊的远程服务,然后通过这个远程服务,使用各种远程控制功能发送远程控制命令,控制被控电脑中的各种应用程序运行,我们称这种远程控制方式为基于远程服务的远程控制。通过远程控制软件,我们可以进行很多方面的远程控制,包括获取目标电脑屏幕图像、窗口及进程列表;记录并提取远端键盘事件(击键序列,即监视远端键盘输入的内容);可以打开、关闭目标电脑的任意目录并实现资源共享;提取拨号网络及普通程序的密码;激活、中止远端程序进程;管理远端电脑的文件和文件夹;关闭或者重新启动远端电脑中的操作系统;修改Windows注册表;通过远端电脑上、下载文件和捕获音频、视频信号等。

2.1.2 远程控制技术的应用 1、远程办公

这种远程的办公方式不仅大大缓解了城市交通状况,减少了环境污染,还免去了人们上下班路上奔波的辛劳,更可以提高企业员工的工作效率和工作兴趣。

2、远程技术支持 通常,远距离的技术支持必须依赖技术人员和用户之间的电话交流来进行,这种交流既耗时又容易出错。许多用户对电脑了解得很少,然而当遇到问题时,他们必须向无法看到电脑屏幕的技术人员描述问题的症状,并且严格遵守技术人员的指示精确地描述屏幕上的内容,但是由于他们的电脑专业知识非常少,描述往往不得要领,这就给技术人员判断故障制造了非常大的障碍。即使技术人员明白了用户电脑的问题所在,在尝试解决问题时,技术人员可能会指导用户执行一系列复杂的命令,而这个过程对用户来说是十分困难的,因为技术人员要依靠自己的语言来“操纵”用户的鼠标和键盘简直是太难了,如果用户不能正确地遵照指示去做,问题可能会进一步恶化,电脑很可能会因为错误的操作导致系统的崩溃。这样一来,往往是技术人员要为十分简单的一个问题和用户说上十几分钟,甚至会专程跑到很远的用

户那里帮助解决问题,而用户往往因为问题还没有解决,只好将电脑闲置不用,单等技术人员上门来解决问题。有了远程控制技术,技术人员就可以远程控制用户的电脑,就像直接操作本地电脑一样,只需要用户的简单帮助就可以得到该机器存在的问题的第一手材料,很快就可以找到问题的所在,并加以解决。

3、远程交流

利用远程技术,商业公司可以实现和用户的远程交流,采用交互式的教学模式,通过实际操作来培训用户,使用户从技术支持专业人员那里学习示例知识变得十分容易。而教师和学生之间也可以利用这种远程控制技术实现教学问题的交流,学生可以不用见到老师,就得到老师手把手的辅导和讲授。学生还可以直接在电脑中进行习题的演算和求解,在此过程中,教师能够轻松看到学生的解题思路和步骤,并加以实时的指导。

4、远程维护和管理

网络管理员或者普通用户可以通过远程控制技术为远端的电脑安装和配置软件、下载并安装软件修补程序、配置应用程序和进行系统软件设置。

2.2 远程控制软件开发环境

Visual Basic是基于对象的可视化程序开发工具,它的优点在于能够快捷、简易的建立Windows应用程序。Visual Basic是在原有BASIC语言的基础上进一步发展,除了保留了BASIC语言的易学易用的优点外,进一步增加了图形用户界面的方法。专业人员可以用 Visual Basic实现其他任何Windows编辑语言的功能,而初学者也能迅速上手建立实用的应用程序。

Visual Basic 6.0中文版本简介:Visual Basic的前身是QBASIC,语言基础是Basic。 Basic(Beginners All-Purpose Symbolic Instruction Code)语言,是一种在计算机技术发展史上应用的最为广泛的语言。Visual Basic在原有Basic语言的基础上进一步发展,至今包含了数百条语句、函数及关键词,其中很多和Windows GUI有直接关系。Visual Basic除了保留了Basic语言的易学易用的优点外,进一步增加了开发图形用户界面的方法,以可视化的用户界面设计机制,把程序设计人员从繁杂的界面设计工作中解脱出来,可以轻易的开发出具有优秀的图形界面和声音、动画、图片集成的多媒体应用程序。自从微软推

出VB后,它便成为了程序开发人员的首选工具。 2.3客户/服务器模式

客户/服务器模型是常用的设计网络模型,(Client/Server,客户端/服务器)又称C/S结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。Client端的任务是将用户的要求提交给Server端,再将Server端返回的结果以特定的形式显示给用户;Server端的任务是接收客户端提出的服务请求,进行相应的处理,再将结果返回给客户端。网络通信要在两台计算机或互相对话的两个程序之间建立网络连接,网络连接包括通信进程的两端以及它们之间的通道。也就是说,在客户/服务器模型中,网络应用程序完成两个独立的和定义好的功能:请求信息和对请求信息做出响应。请求信息是客户方应用程序,对请求信息做出响应的程序充当服务器程序。 2.4 Socket的引入

在远程控制软件中,对于主控机和受控机进行的数据通信所使用的主要技术就是网络编程技术和系统编程技术。

随着计算机网络技术的发展TCP/IP协议,被集成到操作系统内核中时,相当于在操作系统中引入了一种新型的输入/输出操作,操作系统拥护进程与网络的交互作用比用户进程与传统的输入/输出设备互相作用复杂的多。首先,进行网络操作的两个进程不在同机器上,如何建立它们之间的联系?其次,有很多种网络协议,如何建立一种通用机制以支持多种协议?这些都是网络应用变成所要解决的问题。

20世纪80年代初,美国政府的高级研究工程机构ARPA给加利福尼亚大学BERKELEY分校提供了奖金,让他们在UNIX操作系统下实现TCP/IP协议。在这个项目中,研究人员为TCP/IP网络通信开发了一个应用程序接口API。这个API就称为SOCKET(套接字)接口,今天SOCKET接口是TCP/IP网络最为通用的API,也是在INTERNET上进行应用开发最为通用的API。 2.5 因特网协议

TCP/IP(传输控制协议/因特网协议)是建议在因特网的基础上。因特网上的计算机通过互相发送信息分组进行通信,这种信息分组由成块的数据、特定的控制信息和寻址信息组成。控制和寻址信息用来确保信息包到达目的地,并够能被收信主机重新组成可以使用的计算机数据。这种信息传递方式是由TCP/IP协议所规定的。因此,TCP/IP

是互联网的“通信语言”。TCP/IP协议中规定了信息包应该怎样分层、分组,怎样在收信计算机上将信息分组重新装成计算机数据,怎样在线路上传输信号,以及许多其他有关的问题,如不同的层次上的信息分组需要不同的软件和硬件支持,以便他们在不同的网络和通信线路上发送和接收信息。IP的一个主要工作是路由选择,即在网络中引导数据包的过程。TCP负责转换级处理,在一个连接的每一端给每个发送的数据包分配一个顺序号,每个计算机都跟踪记录它已发送或者接收到的数据包顺序号。TCP/IP协议模型由四层组成,分别是应用层、传输层、网络层、网络接口层。 2.6主要控件介绍 2.6.1 Winsock控件

Winsock 控件对用户来说是不可见的,它提供了访问 TCP 和 UDP 网络服务的方便途径。Microsoft Access、Visual Basic、Visual C++ 或 Visual FoxPro 的开发人员都可使用它。为编写客户或服务器应用程序,不必了解 TCP 的细节或调用低级的 Winsock APIs。通过设置控件的属性并调用其方法就可轻易连接到一台远程机器上去,并且还可双向交换数据。

TCP基础:

数据传输协议允许创建和维护与远程计算机的连接。连接两台计算机就可彼此进行数据传输。

如果创建客户应用程序,就必须知道服务器计算机名或者 IP 地址(RemoteHost属性),还要知道进行“侦听”的端口(RemotePort 属性),然后调用Connect方法。

如果创建服务器应用程序,就应设置一个收听端口(LocalPort属性)并调用 Listen 方法。当客户计算机需要连接时就会发生ConnectionRequest事件。为了完成连接,可调用ConnectionRequest事件内的Accept方法。

建立连接后,任何一方计算机都可以收发数据。为了发送数据,可调用 SendData方法。当接收数据时会发生DataArriva事件。调用DataArrival事件内的GetData方法就可获取数据。

UDP基础:

用户数据文报协议(UDP)是一个无连接协议。跟TCP的操作不同,计算机并不建立连接。另外UDP应用程序可以是客户机,也可以是服务器。

为了传输数据,首先要设置客户计算机的LocalPort属性。然后,服务器计算机只需将Remote Host设置为客户计算机的Internet地址,并将 RemotePort属性设置为跟客户计算机的LocalPort属性相同的端口,并调用 SendData方法来着手发送信息。于是,客户计算机使用DataArrival事件内的 GetData方法来获取已发送的信息。 2.6.2Timer控件介绍

Timer(时钟)控件响应时间的流逝。它们独立于用户,编程后可用来在一定的时间间隔执行操作。此控件一般用处是检查系统时钟,判断是否执行某项任务。对于其它后台处理,Timer空间也是非常有用的。

3 远程控制系统总体结构

3.1 远程控制系统的概貌

“远程控制系统的设计与实现”主要包含两个部分:主控端和被控端。主控端是运行在用户计算机上的一个程序,该端主要实现对被控端的控制,主控端提供了一个集控制功能为一体的可视化界面,其作用是发送命令来实现对被控端的控制,该窗体包含了具有不同功能的按钮,如:消息发送按钮、隐藏任务栏按钮、关闭计算机按钮等。通过对这些按钮的相应操作,来实现对被控端的控制。

被控端是运行在受控计算机上的一个程序。当运行主控端程序后将其设置成功,被控端通过输入主控端的IP地址,并利用winsock控件来实现被控端与主控端的连接,然后通过主控端向被控端发送命令,被控端响应主控端的命令来实现相应的功能。 3.2 各模块功能要求

本系统在功能要求上主要实现的功能有:主控端获取被控端计算机系统信息、对被控端界面的控制、对被控端的系统控制以及对向被控端发送消息。

1.主控端获取被控端系统信息。此模块的主要功能是主控端能通过此功能了解到被控计算机上的系统信息,为后面进一步的对被控端进行控制作一个简单的了解,也同时通过此功能对被控计算机上所安装的软、硬件进行了解,做到对被控计算机的了解程度跟了解本机一样。

2.对被控端的界面控制。此模块主要实现主控端对被控计算机的用户界面的控制,包括对开始按钮的隐藏以及显示、任务栏的隐藏以

及显示和桌面图标的隐藏和显示功能。

3.对被控端的系统控制。此模块主要实现对被控计算机的机器系统的控制,包括对被控计算机实施关闭计算机、重新启动被控端计算机以及注销被控端计算机目前使用的用户功能。做到使主控端用户在主控计算机上就能很容易的控制被控计算机的系统。

4.向被控端发送信息。此模块主要实现主控计算机向被控计算机发送文字性消息的功能,有了此功能模块的建立,主控端用户可以在本机上向被控端用户传递信息和发送消息,做到了主控端的用户与被控端用户的联系。

3.3 性能要求

主控端界面应当简单、友好、方便使用和操作;被控端是用作运行在被控计算机内的可执行文件,为提高执行速度,从客户端发送到服务端的信息应尽量的少。主控端与被控端之间通过使用TCP协议建立连接,以实现对被控计算机的控制。

3.4 运行要求

设计出的简单远程控制软件应当在现在使用的大量操作系统上都能运行。例如:Windows 2000、Windows XP、Windows 2003;能在较低的硬件配置上运行,如128M的内存,AMD 1800+的处理器。

3.5 数据要求

简单远程控制系统的结构中,主控端是相当于一个系统的前台,为用户提供了一个操作界面,而几乎所有的操作都是在被控端这个后台处理程序运行的,被控端界面提供的操作可分为连接、动作、和信息三个模块。连接模块是在被控端运行的,动作模块作为远程控制系统的核心,是在主控端运行实现的。 3.6 用户系统描述

首先设置主控计算机为主控端,主控端显示为监听状态,被控端通过输入主控计算机的IP地址点击连接主控端。被控端连接成功后,主控端显示为连接状态,主控端便可以对被控计算机实现各种操作。每次操作成功后都会在主控端计算机上显示相应的提示信息。

4 远程控制系统的功能模块的设计

4.1 远程控制系统的主体设计

本系统主要是由主控端与被控端两部分组成的。主控端为用户提控进行远程控制的操作平台,负责发送命令给被控端和接收被控端的信息。被控端是用户控制的目标,接收到主控端命令后,被控端会分析数据然后调用函数执行命令。两个部分是通过Winsock控件建立连接的,是基于TCP协议的点对点的通信。因为API函数的关系,用户不需要自己来设置端口,大大的方便了用户的操作。

被控端窗口设计为输入主控计算机IP地址,连接主控端计算机的窗口,连接成功后自动进入托盘中,使被控计算机桌面很洁净,也体现出一些隐藏性。

主控端窗口设计为对被控端的各种控制按钮的界面,当被控端与主控端连接成功后在被控端显示连接成功对话框,提示用户连接成功后,用户通过点击界面上的按钮便很容易的实现对被控计算机的各种控制。其体统结构图如图1所示:

图 1 远程控制系统结构图

4. 2 远程控制系统的功能模块

远程控制系统 主控端 被控端 设置主控端 获取被控端消息 被控端系统控制 发送文字消息 控制被控端桌面 发送连接请求 获取命令并执行

图2 系统功能结构图

系统的操作功能主要分为四大模块如图2所示。分别是:

1、获取被控计算机系统信息模块:主控电脑获得被控电脑的主要信息,主要包括可用的实际内存大小、系统版本号、处理器序号、鼠标的按钮个数和C盘的文件系统类型等信息。

2、系统控制模块:实现被控端计算机关机、注销、重起功能。 3、发送消息模块:主控端与被控端进行简单的文字对话。 4、界面控制模块:隐藏或显示被控端开始按钮、任务栏与桌面图像。

4.3 主控端设计思路

主控端主要是发送各种控制命令给被控端,控制被控端实现各种控制功能。当程序运行时首先要进行主控端的设置,本系统采用了人性化的设计,调用了Winsock控件,所以用户不需要自己来设置端口,只要鼠标点击“设置主控端”按钮就可以完成主控端的设置。设置成功后,系统提示设置成功,进入监听状态, 等待被控端发送连接请求,接收到连接请求后建立连接。主控端便可以实现对被控端的控制和消息的发送了。

主控端分为两大部分如图3所示。第一个部分是操作部分,主要分为系统设置、被控端信息、系统控制、发送消息和界面控制五部分。第二部分是信息栏显示,当主控端程序运行时会显示主机的IP地址

和主机名,而当连接建立后,信息栏会显示被控端的IP地址。

主控端 5

远程控制通信系统的各类控制指令数据传输采用的是因特网通道,控制质量数据传输是基于因特网远程控制系统的关键。我们主要以TCP/IP协议上的通信为基础,使用C/S模型来解决控制数据的通信问题。我们在通信系统上的设计是采用WINSOCK,我们按客户/服务器模型来设计基于因特网的远程控制指令数据通信技术。WINSOCK通信系统采用的控制模式有两种方式,一个是多对一,即多个客户可以同时向服务器请求服务,而服务器也能够同时对这些请求给予相信处理。服务器负责控制控制质量的接受和处理。而客户则是控制指令数据的发送和状态数据的接受和显示,另一个一对多,既一个客户可以同时向多个服务器发送请求服务,而服务器也能够对这些请求给予相信处理。服务器负责控制控制指令的接受和处理,而客户则是控制指令的发送和状态数据的接受和显示。主控端与被控端的连接的系统结构图如图4所示:

远程控制系统功能模块的编程及实现 5.1 远程控制系统的系统功能的实现

操作 信息栏 主控端设置 被控端信息 系统控制 发送消息 界面控制 主控端IP地址 主控端主机名 被控端IP地址 图3 主控端结构

图4功能结构层次图

5. 1. 1主控端界面

主控端程序是用VB语言开发的,它拥有一个主界面(如图5所示)和若干小功能窗体,整个主控端界面非常简单,它将系统功能清晰的展现在用户面前,给用户提供了非常方便的操作。

图5 主控端程序界面

界面上各个功能按钮是建立Command数组利用选择函数与各个功能模块相连接的,鼠标单击按钮会弹出相对应的功能窗体如表1所示,实现对被控端的各种控制功能。每个子窗体有相应的功能按钮来

具体控制被控端计算机实现相应功能,如表2所示。在主界面上还添加了Timer控件和Winsock控件,虽然是后台运行但是它们有着非常重要的功能,缺一不可。特别是Winsock控件,它是连接被控段与主控端之间的桥梁。

表1 Command数组与功能模块关系 主窗体 按钮 Command1(0) Command1(1) mainform Command1(3) Command1(4) Command1(5) 探出系统控制窗体 弹出消息发送窗体 退出系统 功能 弹出界面控制窗体 设置计算机为主控端 Command1(2) 弹出获取被控端信息窗体

表2 子窗体按钮功能 子窗体 获取被控端信息 退出 关闭计算机 系统控制窗体 注销计算机 重起计算机 隐藏开始按钮 界面控制窗体 隐藏任务栏 隐藏桌面

按钮 获取信息 功能 获取被控端信息并显示信息 退出获取信息窗体 关闭被控端计算机 注销被控端计算机 重新启动被控端计算机 隐藏被控端开始按钮 隐藏被控端任务栏 隐藏被控端桌面 显示开始按钮 显示任务栏 显示桌面 文本框 消息发送窗体 发送 退出

5.2 远程控制的连接功能实现

显示被控端开始按钮 显示被控端任务栏 显示被控端桌面 传输并显示文字信息 发送文字消息到被控端 退出消息发送窗体 本设计的所有功能的实现都是建立在主控端与被控端之间连接的基础上的。主控端与被控端的连接是通过使用WINSOCK控件基于TCP/IP协议进行通信的。

首先,主控端程序必须设置好LocalPort属性,作为监听端口,这个值为一个整数,只要是一个其他TCP/IP应用程序没有使用过的值即可,本设计中主控端使用的是1007。然后使用Listen方法进入监听状态,等待被控端的连接请求。被控端程序发出连接请求,使主控端程序产生ConnectionRequest事件,该时间得到一个参数requestID,主控端程序用Accept方法接受被控端程序的requestID请求。这样,主控端程序就可以用SendData方法发送数据了。Accept方法必须用上一步得到的requestID作为其参数。当主控端程序接收到数据时,产生DataArrival事件,参数BytesTotal包含接收到的数据字节数。在该事件中可以使用GetData方法接收数据。如果接受到Close事件,则用Close方法关闭TCP/IP连接。

其次,被控端程序设置Remotehost属性,指定运行主控端程序的主机名,设置RemotePort 属性,指定主控端程序的监听端口,使用Connect方法,向主控端提出连接请求。主控端接受被控端的请求,被控端程序产生Connect事件,就可以用SendData方法发送数据了。当被控端程序接收到数据时,产生DataArrival事件,参数BytesTotal包含接收到的数据字节数。该事件中,可以用GetData方法接收数据,如果接收到Close事件,则用Close方法关闭连接。

有了这些设置和代码的编写后,主控端程序与被控端程序就能连接了。首先在被控端Click事件过程中写入代码:

Private Sub Command1_Click()

If txtip.Text = \"\" Then

MsgBox \"请输入IP,后连接\vbInformation, \"提示\" Exit Sub Else

Command1.Enabled = False

sckclient.RemoteHost = txtip.Text sckclient.LocalPort = 1008 sckclient.RemotePort = 1007 sckclient.Connect End If End Sub

把主控端与被控端连接所使用的代码写入Connect事件里: Private Sub scksever_ConnectionRequest(ByVal requestID As Long)

If scksever.State <> 0 Then scksever.Close scksever.Accept requestID ' End Sub

这样在主控端与被控端运行并成功建立连接后,用户通过点击主控端界面上的各种按钮就能驱动相应的事件函数,向被控计算机发送命令代码。

运行在主控端计算机上的客户端先创建一个套接字,绑定之后便处于监听状态,等待服务端的连接请求。目标计算机上线后,同样创建套接字,然后向客户端发起连接请求,两端建立好连接后,客户端便可以向服务端发送请求数据,即命令,服务端收到命令后将执行相应的操作并向客户端发送相应的回应信息。这样客户端就达到控制目标计算机的目的了。

被控端工作流程如图6所示。

开始 请求连接 建立连接 有用户控制? N Y 获取并发送指令 结束 图6 被控端工作流程图

远程控制的系统控制的实现

本系统在此模块中设计为当主控端把控制指令(关机、重起、注销)数据发送给被控端后,被控端接收到这些指令,则进行相应的操作。一般说来如果被控端收到这些指令则调用相应的API函数。在使用界面上运用了选项按钮控件OPTIONBUTTON,在主控端程序中使用了程序控制结构语句If…Then…Else,应用程序中可以经过条件表达式的测试,并根据测试结果为TRUE和FALSE来决定程序运行的方向,只有当满足TURE条件时才会进行下个程序流程,否则执行另一个程序流程。例如当主控端测试结果为REBOOT时,主控端向被控端发送参数"REBOOT",被控端根据参数调用函数Call shell并

触发事件过程重起被控端计算机。

这里调用的Shell函数是VB中的内部函数,它负责执行一个可执行文件,返回一个Variant(Double),如果成功的话,代表这个程序的进程ID,若不成功,则会返回0。

Shell的语法:Shell(PathName[,WindowStyle])。

PathName 为必需参数。类型为String,它指出了要执行的程序名,以及任何需要的参数或命令行变量,也可以包括路径名。

WindowStyle为可选参数。Integer类型,指定在程序运行时窗口的样式。WindowStyle的常量、值的描述如以下这些值: VbHide 0窗口被隐藏,且焦点会移到隐式窗口。

VbNormalFocus1窗口具有焦点,且会还原到它原来的大小和位置。

VbMinimizedFocus2 窗口会以一个具有焦点的图标来显示(缺省值)。

VbMaximizedFocus3 窗口是一个具有焦点的最大化窗口。 VbNormalNoFocus4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。

VbMinimizedNoFocus6 窗口会以一个图标来显示,而当前活动的窗口仍然保持活动

主要代码如下:

Private Sub Command1_Click() If Option1(0).Value = True Then

mainform.scksever.SendData \"CLOSECU\" ElseIf Option1(1).Value = True Then mainform.scksever.SendData \"REBOOT\" Else

mainform.scksever.SendData \"LogOff\" End If End Sub

在被控端的声明sckclient_DataArrival()函数部分写入如下代码: Case \"CLOSECU\" '关机 Call Shell(\"shutdown -s -f\") Case \"REBOOT\" '重起

Call Shell(\"shutdown -r -f\") Case \"LogOff\" '注销

Call Shell(\"shutdown -l -f\") End End Select End Sub

写入被控端的代码如下:

Private Sub Command1_Click()

mainform.scksever.SendData \"HIDSTAR\" End Sub

(定义Command1按钮,当用户点击按钮时发送隐藏开始命令\"HIDSTAR\"给被控端。)

Case \"HIDSTAR\" (接收HIDSTAR命令后,激发隐藏开始按钮事件)

wnd = FindWindowEx(wnd, 0, sStartButton, vbNullString)(利用FindWindow函数获得窗口句柄)

ShowWindow wnd, SW_HIDE(利用ShowWindow函数实现隐藏开始按钮功能)

实现控制图如图7所示:

图 7 系统控制界面

5.4 远程控制的向被控端发送消息的实现

本系统在发送消息模块中使用MSGBOX控件。当主控端在发送信息窗体中输入信息,点击Command1控件按钮时,触发

Command1_Click()事件过程,发送参数SENDIF给被控端,当被控端收到参数后触发被控端的Command1_Click()事件并弹出消息文本对话框显示由主控端发送过来的信息Text1.Text。其主要代码如下:

Private Sub Command1_Click()’主控端

mainform.scksever.SendData \"SENDINF\" & sendtxt.Text End Sub

Private Sub Command1_Click()’被控端

connectform.sckclient.SendData \"SENDINF\" & Text1.Text End Sub

在向被控端对话框中输入消息后,单击发送后主控端效果图如8所示:

图8 主控端发送消息效果图

当主控端发送消息后,被控端自动弹出消息对话框如图9所示:

图9 被控端接收到主控端向被控端发送消息的效果图

5.5 远程控制的被控端界面控制的实现

本系统在此模块中调用Findwindow 和Showwindow 等函

图10 界面控制窗体

数,实现对被控端的桌面图标、开始按钮、任务栏的隐藏和显示的功能。在主控端屏幕控制功能窗体中添加七个Command按钮,分别是隐藏开始按钮、显示开始按钮、隐藏任务栏、显示任务栏、隐藏桌面、显示桌面和退出(图10)。用户点击各个功能按钮时发送命令函数给被控端,实现屏幕控制功能。命令代码如表3。

表3功能按钮与命令

按钮名称 隐藏开始按钮 命令函数 mainform.scksever.SendData \"HIDSTAR\" 显示开始按钮 mainform.scksever.SendData \"APPSTAR\" 隐藏任务栏 mainform.scksever.SendData \"HIDTASK\" 显示任务栏 mainform.scksever.SendData \"NOTHIDT\" 隐藏桌面 mainform.scksever.SendData

\"HIDDISK\" 显示桌面 mainform.scksever.SendData \"NOHIDDI\" 退出 Unload Me 在被控端connectform窗体中添加函数代码,利用选择函数激发事件,当被控端收到主控端命令后,便产生相应的效果。表4中是被控端命令代码和相应的操作函数。

表4 命令代码与函数

命令代码 HIDSTAR APPSTAR HIDTASK NOTHIDT HIDDISK NOHIDDI 操作函数 ShowWindow wnd, SW_HIDE ShowWindow wnd, SW_SHOW ShowWindow wnd, SW_HIDE ShowWindow wnd, SW_SHOW ShowWindow wnd, SW_HIDE ShowWindow wnd, SW_SHOW 被控端与主控端建立连接后,主控端用户鼠标单击“界面控制”按钮,系统弹出界面控制窗体(图10)。当用户点击隐藏开始按钮时,被控端即发送命令\"HIDSTAR\"给被控端。被控端接收到命令后,执行命令隐藏开始按钮。

图11 showwindow函数主要参数

在这里主要调用了API中的ShowWindow函数来实现被控端界面的隐藏和显示功能。 主要参数如图11所示。

因为命令代码的格式基本相同下面进行以“隐藏开始按钮”为例说明,具体命令如表3与表4所示。“/”后为代码的注释。

写入被控端的代码如下: Private Sub Command1_Click()

mainform.scksever.SendData \"HIDSTAR\" End Sub

/定义Command1按钮,当用户点击按钮时发送隐藏开始命令\"HIDSTAR\"给被控端。

写入被控端的代码如下:

Case \"HIDSTAR\" /接收HIDSTAR命令后,激发隐藏开始按钮事件

wnd = FindWindowEx(wnd, 0, sStartButton, vbNullString) /利用FindWindow函数获得窗口句柄 ShowWindow wnd, SW_HIDE

/利用ShowWindow函数实现隐藏开始按钮功能

点击不同的按钮系统会发送相应的命令函数,显示功能是相对于隐藏功能而言的,只有使用了隐藏功能后才可以使用显示功能将画面显示出来。单方面的点击显示功能,被控端窗口显示毫无变化。 5. 6 获取被控端信息功能的实现

本系统在此模块中通过使用SYSINFO控件的使用检测系统事件,例如被控端计算机的系统版本号、系统类型、内存状况、系统盘信息等。将模块代码写如SYSINFO()函数中后,当主控端Command1按钮被按下后,触发CLICK事件,主控端发送参数GETSYST到被控端后,被控端以GETSYST作为套接字字符串,采用DATAARRIRAL事件,当获得调用中的全部数据GETDATA事件被触发,向主控端发送被控端系统信息。在这里调用了以下API函数来实现系统功能如表5所示。

表5 API函数与功能 API函数名 GetComputerName GlobalMemoryStatus GetWindowsDirectory GetVersionEx 实现功能 获得计算机名称 获得当前可用的物理和虚拟内存信息 获得WINDOWS系统路径 检索windows版本信息 GetVolumeInformation 获得分区信息 GetLogicalDriveStrings 获得逻辑驱动器盘符

其具体代码如下:

Public Function sysinfo() As String Dim sys As SYSTEM_INFO

Dim m As MEMORYSTATUS '内存状态 Dim v As OSVERSIONINFO '版本信息

Dim vname$, fsname$, strsave$, tmp$, tcd As String * 30

Dim serial As Long '序列号

GlobalMemoryStatus m '内存情况

v.dwOSVersionInfoSize = Len(v) '版本信息 GetVersionEx v vname = Space(255) fsname = Space(255)

GetVolumeInformation \"c:\\\ '获得容量

'vname = stripnulls(vname) 'fsname = stripnulls(fsname) tmp = Space(255)

GetLogicalDriveStrings 255, tmp '获得所有驱动器信息 For a = Asc(\"a\") To Asc(\"z\") If InStr(tmp, Chr(a) & \":\\\") Then

strsave = strave & IIf(stsave > \"\End If Next a

GetSystemInfo sys '获得CPU信息 '返回信息

s = \"实际内存大小为:\" & m.dwTotalPhys \\ 1024 ^ 2 & \"MB\" s = s & vbCrLf & \"可用的实际内存大小为:\" & m.dwAvailPhys \\ 1024 ^ 2 & \"MB\"

s = s & vbCrLf & \"虚拟内存大小为:\" & m.dwTotalVirtual \\ 1024 ^ 2 & \"MB\"

s = s & vbCrLf & \"可用虚拟内存大小为:\" & m.dwAvailVirtual \\ 1024 ^ 2 & \"MB\"

s = s & vbCrLf & \"以用内存大小为:\" & (m.dwTotalPhys - m.dwAvailPhys) \\ 1024 ^ 2 & \"MB\"

s = s & vbCrLf & vbCrLf & \"系统版本号为:\" & v.dwMajorVersion & \".\" & v.dwMinorVersion

s = s & vbCrLf & \"系统类型 :\" & IIf(v.dwPlatformId = 1, \"95/98/me\

s = s & vbCrLf & vbCrLf & \"处理器类型:\" & sys.dwProcessorType

s = s & vbCrLf & \"处理器序号:\" & sys.dwNumberOfProcessors s = s & vbCrLf & vbCrLf & \"鼠标的按钮个数为:\" & GetSystemMetrics(43)

s = s & vbCrLf & vbCrLf & \"c盘的文件系统:\" & fsname s = s & vbCrLf & \"c盘的卷标名为:\" & vname s = s & vbCrLf & \"c盘的序列号为:\" & serial s = s & vbCrLf & \" 其他盘还有:\" & strsave sysinfo = s

实现效果图如图12所示:

图12 获取被空端信息效果图

5.7 远程控制功能实现流程

本系统的功能实现流程如图13所示:

图13 功能实现流程图及操作按钮

表6 函数与参数对应表

操作按钮 操作函数 SYSINFO() CALL SHELL() CALL SHELL() CALL SHELL() SENDMESSAGE() SHOWWINDOW() SW_SHOW 参数 GETSYST EWX_SHUTDOWN EWX_REBOOT EWX_LOGOFF SENDINF SW_HIDE、注释:CALL SHELL函数根据不同的参数进行不同的操作, 参数EWX_LOGOFF将关闭所有的进程, 然后注销当前用户;参数EWX_REBOOT将关闭当前系统, 然后重新启动;参数EWX_SHUTDOWN将关闭计算机。

6测试

6.1 测试环境

处于同一局域网的两台计算机,对计算机操作系统和机器硬件配置没有相关要求。

6.2 测试过程以及结果

让两台计算机处在同一局域网内,在一台计算机上运行主控端程序另一台计算机运行被控端程序。先在主控端设置计算机为主控计算机,系统提示设置成功如图13所示。当系统设置成功后,在被控端输入主控计算机IP地址单击确定,通过主控端验证后建立连接,当建立连接成功后,被控端弹出建立连接成功提示信息如图14所示,被控端界面进入托盘显示于任务栏右下角,主控端通过鼠标点击按钮进行对被控端的控制实现各个控制功能。

图13设置主控端成功

图14系统连接成功

结果:两台主机成功连接,在主控端界面显示被控端的IP地址和主控端自己的主机名与IP地址。主控端分别单击各个功能按钮来控制被控端实现相应的功能。根据预期效果和显示结果的比较,系统所有功能都已实现。(主控端计算机执行相应的操作情况与测试的过程和结果如表7所示)

表7 测试结果汇总

按 钮 操 作 单击 预期结果 主控端弹出提示 主控端收到被控端发来的系统信息 计算机分别会 关机、 重起、 注销 信息栏显示 主控端弹出提示 测试结果 主控端提示弹出 单击并选择获取信息再单击 单击并分别选择: 关闭计算机、 弹出对话框, 成功弹出对并且里面显示话框,并且显被控端计算机示系统信息 系统信息 计算机分别 关机、 重起、 注销 计算机成功 关闭、 重起、 注销 被控端成功 重起计算机、 注销计算机, 再单击确定 被控端自动弹出在弹出的对话框中输 入:“这是一条由主控对话框,并且对话框中显示:“这是这是一条由主控端发送过来的消息! 弹出对话框,并且对话框中显示:“这是一条由主控端发送过来的消息!” 被控端计算端发送过来的消息!” 一条由主控端发送过来的消息!” 单击并分别选择: 开始按钮的隐藏(显示)、 任务栏的隐藏(显示)、 桌面图标的隐藏(显示) 被控端计算机分别: 开始按钮被隐藏(显示) 任务栏被隐藏 (显示) 桌面图标被隐藏(显示) 被控端按钮分别被隐藏(显示) 机分别: 开始按钮被成功隐藏(显示) 任务栏成功被隐藏 (显示) 桌面图标成功被隐藏(显示) 单击 主控端关闭退出 主控端程序退出 主控端程序成功退出

结 论

通过对远程控制系统的发展的了解;对远程控制系统的分类与功能的学习;对基本理论、远程控制的连接过程和控制过程的研究,特别上对远程控制功能实现的深入研究,所设计的系统形成了C/S构架,具备了远程控制系统的方便操作、控制功能强大等基本特性。为用户提供了简单方便操作的友好界面,实现了获取被控计算机的系统信息、控制被控计算机的关机、重起、注销、向被控计算机发送短消息、控制被控计算机的界面等简单功能。

由于时间与编程能力有限,以及当前简单远程控制软件的迅猛发展,所设计的简单远程控制系统还存在一些不足,功能上只实现了一些例如关闭、重起、注销被控计算机等简单的功能。

计算机技术日新月异,远程控制技术也在不停的更新换代,要设计出功能更强大、水平更高、技术含量更高的远程控制系统,我下一步还应该加强对操作系统、Windows编程、网络编程的学习和对其他更先进的远程控制软件的研究。

参考文献

[1] 李光明.中文VISUALBASIC6.0程序设计教程[M].北京:冶金工业出版社,2002。

[2] 李光明.中文VISUALBASIC6.0程序设计编程实例[M].北京:冶金工业出版社,2001。

[3] 崔彦锋,许小荣.VB网络与远程控制[M].北京:北京希望电子出版社,2002。

[4] 范建华,张涛.TCP/IP详解[M].北京:机械工业出版社,2000。 [5] ChinaITLab.远程控制完全指南

[EB].http://windows.chinaitlab.com,2006-11-03。

[6] Visual Basic 控件及技巧编程专辑[OL].http://www.yesky.com,2001-06-12。

[7] 刘立贺.远程控制系统设计与开发[D].吉林:吉林大学[硕士论文],2006。

致 谢

本文是在老师的热情关心和指导下完成的,他们渊博的知识和严谨的治学作风使我受益匪浅,对顺利完成本课题起到了极大的作用。在此向他们表示我最衷心的感谢!

在论文完成过程中,本人还得到了其他老师和许多同学的热心帮助,本人向他们表示深深的谢意!

最后向在百忙之中评审本文的各位专家、老师表示衷心的感谢!

因篇幅问题不能全部显示,请点此查看更多更全内容

Top