简单远程控制系统主控端及部分被控端设计毕业设计论文.doc_第1页
简单远程控制系统主控端及部分被控端设计毕业设计论文.doc_第2页
简单远程控制系统主控端及部分被控端设计毕业设计论文.doc_第3页
简单远程控制系统主控端及部分被控端设计毕业设计论文.doc_第4页
简单远程控制系统主控端及部分被控端设计毕业设计论文.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计(论文)简单远程控制系统 -主控端及部分被控端设计论文作者姓名:申请学位专业:申请学位类别:指导教师姓名(职称):论文提交日期:第 1 页 共 1 页简单远程控制系统-主控端及部分被控端设计摘 要目前,随着计算机网络的广泛应用,网络速度越来越快,使用远程控制技术,可以对远程计算机进行操作,就像控制本地计算机一样。这种技术在远程设备(软件)的维护、监控与故障诊断等方面有着广泛的应用前景。远程技术支持将占据技术支持的主流:远程教学和培训也将快速发展。企业规模将迅速扩大,所有这些发展都为远程控制软件提供了一个广阔的天地。简单远程控制系统由主控端和被控端两部分组成。主控端用于实施各种对连网计算机的监控操作,被控端对于接收到的数据进行分析,解释并执行。系统主要可以实现获取被控端信息、被控端系统控制、消息发送和被控端界面控制的监控功能。作者的主要工作是主控端的设计与实现及整个获取被控端信息模块的设计与实现。本文对远程控制系统原理和主要相关技术作了简单介绍,在进行的需求分析之后,详细描述了本系统的主控端的设计与实现及被控端的获取被控端信息模块的设计与实现,最后表格形式给出测试结果。 关键词:远程控制;c/s模式;套接字 simple remote control system - the design of controlling terminal and parts of controlled terminal abstractat present, along with the development of the network technology, the speed of the network is faster and faster. 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. my job is the design and implementation of the controlling terminal and the function of getting the information of controlled terminal.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 目 录论文总页数:24页1引言11.1背景11.2国内外研究现状11.3本课题研究的意义21.4作者主要工作22相关理论基础32.1远程控制概述32.1.1远程控制软件的原理32.1.2远程控制技术的应用42.2开发环境52.3主要控件介绍52.3.1winsock控件52.3.2timer控件介绍52.4c/s模式52.5tcp协议与udp协议介绍62.5.1tcp 协议62.5.2udp 协议63需求分析63.1系统概貌63.2功能要求73.3主控端设计思路73.4性能要求83.5运行要求84主控端及部分被控端设计与实现84.1简单远程控制系统结构设计84.1.1简单远程控制系统的结构84.1.2简单远程控制系统的功能模块94.2系统功能的实现104.2.1主控端界面104.2.2功能实现过程114.2.3系统控制功能的实现114.2.4发送消息功能的实现134.2.5界面控制功能的实现144.3部分被控端程序功能的实现164.3.1被控端的连接164.3.2获取被控端信息功能的实现175测试195.1测试环境195.2测试过程与结果19结 论21参考文献22致 谢23声 明241 引言1.1 背景远程控制是在网络上由一台电脑(主控端remote/客户端)远距离去控制另一台电脑(被控端host/服务器端)的技术,这里的远程不是字面意思的远距离,一般指通过网络控制远端电脑,不过,大多数时候我们所说的远程控制往往指在局域网中的远程控制而言,远程控制必须通过网络才能进行。主控端和被控端可以是位于同一局域网的同一房间中,也可以是连入internet的处在任何位置的两台或多台计算机。简单远程控制具有和木马相同的原理,远程控制一旦被居心不良者钻了空子,它的危害甚至比木马还要严重。远程控制具有很多功能,例如远程培训与教学.远程办公.远程管理与维护.远程监控。电脑中的远程控制技术,始于dos时代,只不过当时由于技术上没有什么大的变化,网络不发达,市场没有更高的要求,所以远程控制技术没有引起更多人的注意。但是,随着网络的高度发展,电脑的管理及技术支持的需要,远程操作及控制技术越来越引起人们的关注。1.2 国内外研究现状起初,使用远程控制软件,是为了让pc用户在离开办公室时能访问其台式pc硬盘中的信息,甚至可以通过其台式pc访问企业网络资源,今天,许多企业和增值分销商正在把远程控制能力作为有效的技术支持工具。很多网络管理员都采用这类软件对局域网进行管理,或者在家中更新自己网站的内容。这类软件对于出差在外的商务人员用处非常大,因为他们可以随时提取自己家里计算机中的数据和资料。远程控制软件在计算机远程教学和培训中也发挥了很大的作用,使身处异地的学生能够与老师进行适时交流,犹如坐在同一间教室。近年来,黑客技术不断成熟起来,对网络安全造成了极大的威胁。黑客的主要攻击手段之一就是使用远程控制技术,渗透到对方的主机系统里,从而实现远程操作目标主机,其破坏力之大,是绝不容忽视的。目前,远程控制技术也广泛应用在工业领域,可以对远程数据进行实时监控,提高工作效率,进而降低管理成本。远程控制逐渐成为当前信息技术领域的热点。,远程控制在国内外都有不同程度的研究。相对于来说,由于西方国家在信息技术和计算机控制技术的发展上的优势,他们在远程控制方面相对早一些,已经有了一些基本成熟的产品问世。国内由于网络的飞速发展,近几年也开始积极的研究。国内外在远程控制机器人控制方面的研究相对比其它领域要多一些。这些远程控制系统普遍采用了客户/服务器模型(即c/s模型),可以是一对一的模式,也可以是一对多的模式。远程控制一般支持下面的这些网络方式:lan、wan、拨号方式、互联网方式。此外,有的远程控制软件还支持通过串口、并口、红外端口来对远程机进行控制(不过,这里说的远程电脑,只能是有限距离范围内的电脑了)。传统的远程控制软件一般使用netbeui、netbios、ipx/spx、tcp/ip等协议来实现远程控制,不过,随着网络技术的发展,目前很多远程控制软件提供通过web页面以java技术来控制远程电脑,这样可以实现不同操作系统下的远程控制。1.3 本课题研究的意义随着社会、科技、经济的不断发展,远程控制技术的应用范围也在不断扩展。小到个人的使用,大到整个行业的应用。远程控制技术应用到了我们生活中的各行各业中,从银行、军事、机要部门等特殊行业领域到电业部门、邮政电信部门、商业部门、普通工矿企业、道路交通领域、卫生医疗部门以及宾馆酒店行业等等,其卓越的功能也日益受到各个应用行业的重视和青睐。远程控制是当前信息技术领域的热点,使用远程控制技术,我们可以克服因地域差异而造成的操作不便,让网络的效率得到更大的发挥。随着技术的发展与网络的普及,目前远程控制技术的应用领域已经相当广泛。我们不仅可以通过远程控制技术管理远端电脑,解决远端电脑的故障,与其他同事通过网络实现远程协作,一起编辑一份文档或者与其他团队成员交流信息,还可以在家里或旅途中使用公司内部网络的数据与办公设备,实现远程办公。此外,您还能让学员远程连接到您的电脑,实时学习软件的操作,或者与多位远程连接用户进行多点会话。 对于个人用户而言,远程控制技术最具吸引力的莫过于可以遥控远端的电脑。用户可以在家中操作办公室里的电脑,或者在办公室里调用存储在家中的文档,同时还可以当一回专家,通过远程控制计算机为朋友的电脑排忧解难。1.4 作者主要工作 改系统软件是本人与周睿同学共同研究开发的,周睿同学主要负责被控端的设计与开发,本人主要负责主控端和部分被控端(获取被控端信息)的设计与开发。本人在系统开发中的具体工作:1、搜寻与系统开发相关的资料,熟悉vb开发语言。 2、完成主控端界面设计。3、完成界面按钮与各个功能模块的连接。4、完成主控端各个模块的界面与程序代码。5、完成整个获取被控端信息功能模块(包含被控端部分)。6、与周睿同学一起对系统进行调试和测试。7、归并相关系统开发文档,完成毕业论文的撰写。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 主要控件介绍2.3.1 winsock控件winsock 控件对用户来说是不可见的,它提供了访问 tcp 和 udp 网络服务的方便途径。microsoft access、visual basic、visual c+ 或 visual foxpro 的开发人员都可使用它。为编写客户或服务器应用程序,不必了解 tcp 的细节或调用低级的 winsock apis。通过设置控件的属性并调用其方法就可轻易连接到一台远程机器上去,并且还可双向交换数据。2.3.2 timer控件介绍timer(时钟)控件响应时间的流逝。它们独立于用户,编程后可用来在一定的时间间隔执行操作。此控件一般用处是检查系统时钟,判断是否执行某项任务。对于其它后台处理,timer空间也是非常有用的。2.4 c/s模式c/s(client/server,客户端/服务器)模式又称c/s结构。即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到client端和server端来实现,降低了系统的通讯开销。client端的任务是将用户的要求提交给server端,再将server端返回的结果以特定的形式显示给用户;server端的任务是接收客户端提出的服务请求,进行相应的处理,再将结果返回给客户端。2.5 tcp协议与udp协议介绍2.5.1 tcp 协议数据传输协议允许创建和维护与远程计算机的连接。连接两台计算机就可彼此进行数据传输。如果创建客户应用程序,就必须知道服务器计算机名或者ip 地址(remotehost 属性),还要知道进行“侦听”的端口(remoteport 属性),然后调用 connect 方法。如果创建服务器应用程序,就应设置一个收听端口(localport 属性)并调用 listen 方法。当客户计算机需要连接时就会发生 connectionrequest 事件。为了完成连接,可调用 connectionrequest 事件内的 accept 方法。建立连接后,任何一方计算机都可以收发数据。为了发送数据,可调用 senddata 方法。当接收数据时会发生 dataarrival 事件。调用 dataarrival 事件内的 getdata 方法就可获取数据。2.5.2 udp 协议用户数据报协议 (udp) 是一个无连接协议。跟 tcp 的操作不同,计算机并不建立连接。另外 udp 应用程序可以是客户机,也可以是服务器。为了传输数据,首先要设置客户计算机的 localport 属性。然后,服务器计算机只需将 remotehost 设置为客户计算机的 internet 地址,并将 remoteport 属性设置为跟客户计算机的 localport 属性相同的端口,并调用 senddata 方法来着手发送信息。于是,客户计算机使用 dataarrival 事件内的 getdata 方法来获取已发送的信息。3 需求分析3.1 系统概貌简单远程控制系统包含被控端和主控端两部分。被控端是运行在受控计算机上的一个程序。当运行主控端程序后将其设置成功,被控端通过输入主控端的ip地址,并利用winsock控件来实现被控端与主控端的连接,然后通过主控端向被控端发送命令,被控端响应主控端的命令来实现相应的功能。 主控端提供了一个集控制功能为一体的可视化界面,其作用是发送命令来实现对被控端的控制,该窗体包含了具有不同功能的按钮,如:消息发送按钮、隐藏任务栏按钮、关闭计算机按钮等。通过对这些按钮的相应操作,来实现对被控端的控制。3.2 功能要求本系统在功能要求上主要实现的功能有:主控端获取被控端计算机系统信息、对被控端界面的控制、对被控端的系统控制以及对向被控端发送消息。1主控端获取被控端系统信息。此模块的主要功能是主控端能通过此功能了解到被控计算机上的系统信息,为后面进一步的对被控端进行控制作一个简单的了解,也同时通过此功能对被控计算机上所安装的软、硬件进行了解,做到对被控计算机的了解程度跟了解本机一样。2对被控端的界面控制。此模块主要实现主控端对被控计算机的用户界面的控制,包括对开始按钮的隐藏以及显示、任务栏的隐藏以及显示和桌面图标的隐藏和显示功能。3对被控端的系统控制。此模块主要实现对被控计算机的机器系统的控制,包括对被控计算机实施关闭计算机、重新启动被控端计算机以及注销被控端计算机目前使用的用户功能。做到使主控端用户在主控计算机上就能很容易的控制被控计算机的系统。4向被控端发送信息。此模块主要实现主控计算机向被控计算机发送文字性消息的功能,有了此功能模块的建立,主控端用户可以在本机上向被控端用户传递信息和发送消息,做到了主控端的用户与被控端用户的联系。3.3 主控端设计思路主控端主要是发送各种控制命令给被控端,控制被控端实现各种控制功能。当程序运行时首先要进行主控端的设置,本系统采用了人性化的设计,调用了winsock控件,所以用户不需要自己来设置端口,只要鼠标点击“设置主控端”按钮就可以完成主控端的设置。设置成功后,系统提示设置成功,进入监听状态, 等待被控端发送连接请求,接收到连接请求后建立连接。主控端便可以实现对被控端的控制和消息的发送了。主控端分为两大部分如图1所示。第一个部分是操作部分,主要分为系统设置、被控端信息、系统控制、发送消息和界面控制五部分。第二部分是信息栏显示,当主控端程序运行时会显示主机的ip地址和主机名,而当连接建立后,信息栏会显示被控端的ip地址。主控端操作 信息栏主控端设置被控端信息系统控制发送消息 界面控制 主控端ip地址主控端主机名被控端ip地址图1 主控端结构3.4 性能要求主控端界面应当简单、友好、方便使用和操作;被控端是用作运行在被控计算机内的可执行文件,为提高执行速度,从客户端发送到服务端的信息应尽量的少。主控端与被控端之间通过使用tcp协议建立连接,以实现对被控计算机的控制。3.5 运行要求设计出的简单远程控制软件应当在现在使用的大量操作系统上都能运行。例如:windows 2000、windows xp、windows 2003;能在较低的硬件配置上运行,如128m的内存,amd 1800+的处理器。4 主控端及部分被控端设计与实现4.1 简单远程控制系统结构设计4.1.1 简单远程控制系统的结构本系统主要是由主控端与被控端两部分组成的。主控端为用户提控进行远程控制的操作平台,负责发送命令给被控端和接收被控端的信息。被控端是用户控制的目标,接收到主控端命令后,被控端会分析数据然后调用函数执行命令。两个部分是通过winsock控件建立连接的,是基于tcp协议的点对点的通信。因为api函数的关系,用户不需要自己来设置端口,大大的方便了用户的操作。系统框架如图2所示。图2系统框架图4.1.2 简单远程控制系统的功能模块发送文字消息远程控制系统主控端被控端设置主控端获取被控端消息被控端系统控制发送连接请求获取命令并执行控制被控端桌面图3 系统功能结构图系统的操作功能主要分为四大模块如图所示。分别是:1、获取被控计算机系统信息模块:主控电脑获得被控电脑的主要信息,主要包括可用的实际内存大小、系统版本号、处理器序号、鼠标的按钮个数和盘的文件系统类型等信息。、系统控制模块:实现被控端计算机关机、注销、重起功能。、发送消息模块:主控端与被控端进行简单的文字对话。、界面控制模块:隐藏或显示被控端开始按钮、任务栏与桌面图像。4.2 系统功能的实现4.2.1 主控端界面主控端程序是用vb语言开发的,它拥有一个主界面(如图所示)和若干小功能窗体,整个主控端界面非常简单,它将系统功能清晰的展现在用户面前,给用户提供了非常方便的操作。图4 主控端程序界面界面上各个功能按钮是建立command数组利用选择函数与各个功能模块相连接的,鼠标单击按钮会弹出相对应的功能窗体如表1所示,实现对被控端的各种控制功能。每个子窗体有相应的功能按钮来具体控制被控端计算机实现相应功能,如表2所示。在主界面上还添加了timer控件和winsock控件,虽然是后台运行但是它们有着非常重要的功能,缺一不可。特别是winsock控件,它是连接被控段与主控端之间的桥梁。表1 command数组与功能模块关系主窗体按钮功能mainformcommand1(0)弹出界面控制窗体command1(1)设置计算机为主控端command1(2)弹出获取被控端信息窗体command1(3)探出系统控制窗体command1(4)弹出消息发送窗体command1(5)退出系统表2 子窗体按钮功能子窗体按钮功能获取被控端信息获取信息获取被控端信息并显示信息退出退出获取信息窗体系统控制窗体关闭计算机关闭被控端计算机注销计算机注销被控端计算机重起计算机重新启动被控端计算机界面控制窗体隐藏开始按钮隐藏被控端开始按钮隐藏任务栏隐藏被控端任务栏隐藏桌面隐藏被控端桌面显示开始按钮显示被控端开始按钮显示任务栏显示被控端任务栏显示桌面显示被控端桌面消息发送窗体文本框传输并显示文字信息发送发送文字消息到被控端退出退出消息发送窗体4.2.2 功能实现过程本系统的所有功能的实现都是建立在主控端与被控端之间连接基础之上的。主控端与被控端的连接是通过使用winsock控件建立的,是基于tcp/ip协议进行点对点的通信。系统在建立连接前必须先设置计算机为主控计算机,系统编程时因为调用了winsock控件,程序会自动设置localport属性,作为监听端口,这个值为一个整数,只要是一个其他tcp/ip应用程序没有使用过的值即可,本系统中主控端使用的是1007。然后使用listen方法进入监听状态,等待被控端的连接请求。被控端程序发出连接请求,使主控端程序产生connectionrequest事件,该时间得到一个参数requestid,主控端程序用accept方法接受被控端程序的requestid请求。这样,主控端程序就可以用senddata方法发送数据了。accept方法必须用上一步得到的requestid作为其参数。当主控端程序接收到数据时,产生dataarrival事件,参数bytestotal包含接收到的数据字节数。在该事件中可以使用getdata方法接收数据。如果接受到close事件,则用close方法关闭tcp/ip连接。本人在系统开发中主要负责主控端和获取被控端系统信息功能模块的设计(包含被控端部分),由于系统的功能必须有主控端和被控端一起来实现,下面的内容在介绍主控端功能时,同样会介绍被控端。 4.2.3 系统控制功能的实现本系统在此模块中设计为当主控端把控制指令(关机、重起、注销)数据发送给被控端后,被控端接收到这些指令,则进行相应的操作。一般说来如果被控端收到这些指令则调用相应的api函数。在使用界面上运用了选项按钮控件optionbutton,在主控端程序中使用了程序控制结构语句ifthenelse,应用程序中可以经过条件表达式的测试,并根据测试结果为true和false来决定程序运行的方向,只有当满足ture条件时才会进行下个程序流程,否则执行另一个程序流程。例如当主控端测试结果为reboot时,主控端向被控端发送参数reboot,被控端根据参数调用函数call shell并触发事件过程重起被控端计算机。这里调用的shell函数是vb中的内部函数,它负责执行一个可执行文件,返回一个variant(double),如果成功的话,代表这个程序的进程id,若不成功,则会返回0。shell的语法:shell(pathname,windowstyle)。主要代码如下:private sub command1_click()if option1(0).value = true thenmainform.scksever.senddata closecuelseif option1(1).value = true thenmainform.scksever.senddata rebootelsemainform.scksever.senddata logoffend ifend sub在被控端的声明sckclient_dataarrival()函数部分写入如下代码:case closecu 关机call shell(shutdown -s -f)case reboot 重起call shell(shutdown -r -f)case logoff 注销call shell(shutdown -l -f) endend selectend sub实现系统控制如图5所示:图 5 系统控制界面与“系统控制”相同,主控端在单击别的操作按钮时也执行相应的函数,发送相应的命令,被控端收到数据后,首先解包获取命令代码,再根据命令调图6 功能执行流程图用对应的操作函数,执行相关语句产生相应效果。大致过程如图6所示。4.2.4 发送消息功能的实现本系统在发送消息模块中使用msgbox控件,调用sendmessage函数来实现文字聊天功能。当主控端在发送信息窗体中输入信息,点击command1控件按钮时,触发command1_click()事件过程,发送参数sendif给被控端,当被控端收到参数后触发被控端的command1_click()事件并弹出消息文本对话框显示由主控端发送过来的信息text1.text。其主要代码如下:private sub command1_click()主控端mainform.scksever.senddata sendinf & sendtxt.textend subprivate sub command1_click()被控端connectform.sckclient.senddata sendinf & text1.textend sub实现效果图如7所示图7主控端向被控端发送消息的效果图4.2.5 界面控制功能的实现本系统在此模块中调用findwindow 和showwindow 等函数,实现对被控图8 界面控制窗体端的桌面图标、开始按钮、任务栏的隐藏和显示的功能。在主控端屏幕控制功能窗体中添加七个command按钮,分别是隐藏开始按钮、显示开始按钮、隐藏任务栏、显示任务栏、隐藏桌面、显示桌面和退出(图8)。用户点击各个功能按钮时发送命令函数给被控端,实现屏幕控制功能。命令代码如表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命令代码与函数命令代码操作函数hidstarshowwindow wnd, sw_hideappstarshowwindow wnd, sw_showhidtaskshowwindow wnd, sw_hidenothidtshowwindow wnd, sw_showhiddiskshowwindow wnd, sw_hidenohiddishowwindow wnd, sw_show被控端与主控端建立连接后,主控端用户鼠标单击“界面控制”按钮,系统弹出界面控制窗体(图8)。当用户点击隐藏开始按钮时,被控端即发送命令hidstar给被控端。被控端接收到命令后,执行命令隐藏开始按钮。图9 showwindow函数主要参数在这里主要调用了api中的showwindow函数来实现被控端界面的隐藏和显示功能。 主要参数如图9所示。因为命令代码的格式基本相同下面进行以“隐藏开始按钮”为例说明,具体命令如表3与表4所示。“/”后为代码的注释。写入被控端的代码如下:private sub command1_click()mainform.scksever.senddata hidstarend sub/定义command1按钮,当用户点击按钮时发送隐藏开始命令hidstar给被控端。写入被控端的代码如下:case hidstar /接收hidstar命令后,激发隐藏开始按钮事件 wnd = findwindowex(wnd, 0, sstartbutton, vbnullstring) /利用findwindow函数获得窗口句柄 showwindow wnd, sw_hide /利用showwindow函数实现隐藏开始按钮功能点击不同的按钮系统会发送相应的命令函数,显示功能是相对于隐藏功能而言的,只有使用了隐藏功能后才可以使用显示功能将画面显示出来。单方面的点击显示功能,被控端窗口显示毫无变化。4.3 部分被控端程序功能的实现4.3.1 被控端的连接被控端程序在与主控端程序建立连接时首先设置remotehost属性,指定运行主控端程序的主机名,设置remoteport 属性,指定主控端程序的监听端口。然后在主控端设置成功的前提下向主控端发送连接请求。主控端接收并通过被控端的请求,建立连接,就可以用senddata方法发送数据了。当被控端程序接收到数据时,发生dataarrival事件,参数bytestotal包含接收到的数据字节数。该事件中,可以用getdata方法接收数据,如果接收到close事件,则用close方法关闭连接。被控端工作流程如图10所示。n y 请求连接建立连接有用户控制?获取并发送指令结束开始图10 被控端工作流程图4.3.2 获取被控端信息功能的实现前面几个功能模块是和周睿同学分工合作开发的,本人主要是主控端的开发,周睿同学负责被控端部分的开发,而获取被控端信息功能是作者独自完成的。本系统在此模块中通过使用sysinfo控件的使用检测系统事件,例如被控端计算机的系统版本号、系统类型、内存状况、系统盘信息等。将模块代码写如sysinfo()函数中后,当主控端command1按钮被按下后,触发click事件,主控端发送参数getsyst到被控端后,被控端以getsyst作为套接字字符串,采用dataarriral事件,当获得调用中的全部数据getdata事件被触发,向主控端发送被控端系统信息。在这里调用了以下api函数来实现系统功能如表5所示。表5 api函数与功能api函数名实现功能getcomputername获得计算机名称globalmemorystatus获得当前可用的物理和虚拟内存信息getwindowsdirectory获得windows系统路径getversionex检索windows版本信息getvolumeinformation获得分区信息getlogicaldrivestrings获得逻辑驱动器盘符其具体代码如下:public function sysinfo() as stringdim sys as system_info dim m as memorystatus 内存状态dim v as osversioninfo 版本信息dim vname$, fsname$, strsave$, tmp$, tcd as string * 30dim serial as long 序列号globalmemorystatus m 内存情况v.dwosversioninfosize = len(v) 版本信息getversionex vvname = space(255)fsname = space(255)getvolumeinformation c:, vname, 255, serial, 0, 0, fsname, 255 获得容量vname = stripnulls(vname)fsname = stripnulls(fsname)tmp = space(255)getlogicaldrivestrings 255, tmp 获得所有驱动器信息for a = asc(a) to asc(z)if instr(tmp, chr(a) & :) thenstrsave = strave & iif(stsave , , ) & chr(a)end ifnext agetsysteminfo sys 获得cpu信息返回信息s = 实际内存大小为: & m.dwtotalphys 1024 2 & mbs = s & vbcrlf & 可用的实际内存大小为: & m.dwavailphys 1024 2 & mbs = s & vbcrlf & 虚拟内存大小为: & m.dwtotalvirtual 1024 2 & mbs = s & vbcrlf & 可用虚拟内存大小为: & m.dwavailvirtual 1024 2 & mbs = s & vbcrlf & 以用内存大小为: & (m.dwtotalphys - m.dwavailphys) 1024 2 & mbs = s & vbcrlf & vbcrlf & 系统版本号为: & v.dwmajorversion & . & v.dwminorversions = s & vbcrlf & 系统类型 : & iif(v.dwplatformid = 1, 95/98/me, nt/2000)s = s & vbcrlf & vbcrlf & 处理器类型: & sys.dwprocessortypes = s & vbcrlf & 处理器序号: & sys.dwnumberofprocessorss = s & vbcrlf & vbcrlf & 鼠标的按钮个数为: & getsystemmetrics(43)s = s & vbcrlf & vbcrlf & c盘的文件系统: & fsnames = s & vbcrlf & c盘的卷标名为: & vnames = s & vbcrlf & c盘的序列号为: & serials = s & vbcrlf & 其他盘还有: & strsavesysinfo = s实现效果图如图11所示:图11 获取被空端信息效果图5 测试5.1 测试环境处于同一局域网的两台

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论