基于CS模型的远程控制系统的设计.doc
模板使用说明(请在使用前详细阅读此说明!)1、 各部分内容可以直接打字输入,也可使用粘贴功能,但要保证粘贴内容格式正确。2、 目录为自动生成模式,不要修改目录,论文完成后请右键单击目录区域,选择“更新域”即可。各级标题一定要使用相应标题格式,否则在目录里不能体现。3、 论文中各种行间距请自行调整。4、 如本模板和哈尔滨理工大学本科毕业设计(论文)撰写规范的规定不一至,以哈尔滨理工大学本科毕业设计(论文)撰写规范的规定为准。本模板仅供参考,请严格按照哈尔滨理工大学本科毕业设计(论文)撰写规范完成论文。如不会使用word的模板功能,请自行按哈尔滨理工大学本科毕业设计(论文)撰写规范完成论文。(请在完成论文后,打印论文前,删除本页内容及后文批注!)基于C/S模型的远程控制系统的设计摘 要随着计算机信息现代化的发展,许多行业出现网上办公的特点,甚至越来越多的人选择在家中办公,足不出户完成工作。计算机信息技术加速了现代社会的经济发展,令电子商务活动变得更便捷。在现代计算机信息技术中,计算机远程控制系统越来越受到各方面的重视。计算机远程控制系统是控制远程计算机的网络通信程序。它是计算机科学与通信技术相结合的产物。这一技术在未来将会服务于工业领域、办公领域、通信领域、军事领域等。远程控制是在网络上由一台电脑(主控端Remote/客户端)远距离去控制另一台电脑(被控端Host/服务器端)的技术,这里的远程不是字面意思的远距离,一般指通过网络控制远端电脑。本文主要分析了计算机远程控制系统的一些基本功能和组成,并进行具体研究和设计。主要包括系统的需求分析,系统的结构,整个系统的总体设计,功能模块设计等,同时简要介绍了TCP通信协议和开发平台以及相关函数,并且分析了C/S模型的特点。本系统采用Visual Studio 2008开发工具,针对控制对象的具体特点,搭建了基于C/S模型的远程控制系统,然后根据该系统的具体要求,实际分析,采用了TCP/IP的网络通信协议。结合Socket API和MFC技术来开发代码最终实现本系统。本课题主要应用了以下技术,如:异步模式soket、面向对象编程的思想、多线程、图片传输等技术。整个系统操作简单,界面简洁,功能实用强大,实现了对客户端的屏幕监控,文件和文件夹的新建和删除,以及客户端文件的上传下载,进程管理,系统服务状态查看,远程关机或者注销重启,基本完成了远程控制系统中的主要功能。关键词C+;C/S模型;TCP协议;远程控制系统The researching of the Remote Control System based on by C/S moduleAbstractClick here and input abstract in EnglishKeywordsElectric machine, motor, magnetic field, fault analysis不要删除行尾的分节符目 录摘要IAbstractII第1章 绪论11.1 课题研究目的和意义11.2 国内外研究现状分析21.3 论文研究的主要内容31.4 本章小结4第2章 开发平台基础知识52.1 C+语言52.2 OOP简介52.3 MFC62.4 Visual C+集成开发环境72.5 网络通信基础82.5.1 ISO 七层模型82.5.2 七层OSI参考模型的作用102.6 Client和Server112.6.1 Client/Server简介112.6.2 Client/Server简介122.7 事件驱动的程序设计122.8 本章小结14第3章 需求分析153.1 系统可行性分析153.2 系统基本功能153.3 功能需求分析163.4 本章小结18第4章 详细设计194.1 开发环境194.2 客户端与服务器连接设计194.2.1 服务器端实现原理194.2.2 客户端实现原理204.2.3 数据流实现原理204.2.4 与服务器端相关 的API204.2.5 客服端要使用的API244.3 系统各个模块的设计254.3.1 屏幕监控模块254.3.2 文件管理模块274.3.3 进程管理模块274.3.4 远程执行命令CMD模块284.3.5 线程与进程304.3.6 创建线程所使用的API314.3.7 消息模拟324.4 本章小结34结论36致谢37参考文献38附录A40附录B41附录C43千万不要删除行尾的分节符。在目录上点右键“更新域”,然后“更新整个目录”。打印前,不要忘记把上面“Abstract”这一行后加一空行第1章 绪论1.1 课题研究目的和意义21世纪我国的信息化产业突飞猛进,网络技术发展日新月异。随着运营商网络质量质量的提高和资费的降低,更加促进了互联网的蓬勃发展。对个人来说,网络社交软件、网络搜索引擎、网上交易平台、以及O2O平台已经融入人们的生活,网络贯穿平时的衣食住行并为人们提供了方便快捷的服务。对于工业和制造业,在电商平台和物流业的有力支撑下,全球化已然成为各大跨国制造巨头占领世界市场的首要策略。而随着企业间的相互竞争程度不断扩大,产品的成本和品质的控制以及服务质量逐渐成为了一个企业在这场战役中取胜的关键因素之一。传统的品质控制,当用户反馈设备或软件问题时,技术人员出差来客户现场来进行排查问题,解决问题后回到公司,此种方式人员成本和差旅成本过高,而且由于全球化的原因,产品的最终客户遍布在世界各地,无法在各个地域及地区的用户附近都配置专业的品质控制服务人员,因此,迫切需要一些介于他们与客户之外的本地的第三方品质控制服务。为了应对这种日益增长的第三方品质控制服务的需要,建立一个覆盖范围广泛的远程控制系统是十分有必要的。随着互联网的高速发展,远程控制技术作为生活生产中极其重要的技术,正逐步被人们所认识。通过远程控制系统,公司总部的设备维修专家们不需要亲临现场就能够了解到现场的情况,通过远程控制系统操作用户的电脑,就像直接操作本地电脑一样,只需要用户的简单帮助就可以得到该机器存在的问题的第一手材料,很快就可以找到问题的所在,并加以解决。既节约了人力和差旅成本,又提高了双方的沟通交流效率,更快更有效率的帮助客户解决生产过程中的问题。对于网络管理人员来说,在整个网络运行期间,希望能够实时了解每一台联网计算机的运行状态并进行一些相关操作,希望能够客户机和主机之间互相传送文件;希望能够防止病毒的蔓延、非法程序的拷贝、禁止某些用户的越权或非法操作等。教师和学生之间可以利用这种远程控制技术实现教学问题的交流,学生可以不用见到老师,就得到老师手把手的辅导和讲授。学生还可以直接在电脑中进行习题的演算和求解,在此过程中,教师能够轻松看到学生的解题思路和步骤,并加以实时的指导。基于以上需求,研究并实现一款远程控制软件是很有意义的,同时能在现实生活中为人们提供更多的便捷。1.2 国内外研究现状分析随着互联网技术的迅速发展,远程控制技术已经日臻完善。远程控制技术是国内外研究的前沿课题,国内外都展开了积极的研究。电脑端的远程控制技术,始于DOS时代,只不过当时网络不发达,市场没有更高的要求,所以远程控制技术没有引起更多人的注意。但是,随着网络的高速发展,电脑的管理及技术支持的需要,远程操作及控制技术越来越引起人们的关注。远程控制一般支持下面的这些网络方式:LAN、WAN、拨号方式、互联网方式。此外,有的远程控制软件还支持通过串口、并口、红外端口来对远程机进行控制。传统的远程控制软件一般使用TCP/IP等协议来实现远程控制,不过,随着网络技术的发展,目前很多远程控制软件提供通过Web端或者手机端来远程控制电脑,如Android手机远程控制电脑,web页面远程控制电脑等是当前远控软件发展的趋势。国外软件行业发展和积累多年,不管是网络技术和工业技术都发展迅速,从而促进了远程控制技术的不断崛起,获得了不少技术专利和成果。1997年1月,首届基于Internet的远程监控诊断工作会议由斯坦福大学和麻省理工学院联合主办,由来自30多个公司和研究机构的50多位代表到会。会议主要讨论了有关远程监控系统开放式体系、诊断信息规程、传输协议及对用户的合法限制等,并对未来技术发展做了展望。由斯坦福大学和麻省理工学院合作开发的基于Internet的下一代远程控制诊断示范系统,得到了制造业、计算机业和仪表业的大力支持和通力配合。又如美国伯克利大学实验室自主研发的远控机器手臂来模拟人手种植花卉。世界闻名的德国产品TeamViewer,一款可以穿透防火墙以及NAT的远程控制、桌面分享、文件传输的远程控制软件,其在桌面分享时画面流畅度清晰度很高,在视频以及语音的传输协议设计以及传输算法进行了极大的优化,该软件第一次启动在两台计算机上自动生成伙伴ID。只需要输入你的伙伴的ID到TeamViewer,然后就会建立起连接。这些方面性能超过其他同类软件。国内远程控制技术虽然起步比较晚,但是也取得了一些不俗的研究成果和成绩。第一代远控软件产生于2001年,“灰鸽子”采用Delphi语言编写,具备键盘记录,屏幕录取,文件上传和下载,以及开启摄像头等功能,后因开放源代码导致衍生软件覆盖面广,大大危害了互联网的安全,不过现在主流的杀毒软件都能识别并杀出“灰鸽子”远控软件。第二代远控是在第一代基础上不断升级网络模型,从Select模型到完成端口+线程池技术,并将以前的ip上线方式改成了域名上线方式,重点升级了过杀软的技术和能力。国内的向日葵远程控制,虽然在速度以及流畅度方面逊色于TeamViewer,但是比TeamViewer的功能丰富和强大。在软件的本地化方面,也更加符合国内使用者的使用习惯,得到了很多国内用户的喜欢。另外国内的网络人远程控制软件,人气至今名列前茅。该软件是国内唯一一款获得国家公安部认证的远程控制软件,并且获得各大权威杀毒软件的安全认证。开创了多重密码嵌套技术,令使用用户得到网银级别的安全加密。这是由于使用了U盾加密技术。远程控制具有优点:便于用户能够在任何地方通过网络及时,快速的访问,控制自己的主机。当然,远程控制软件是一把双刃剑,有优点就会有缺点,它存在比较严重的安全隐患。一方面给用户和网络管理员工作带了很大的方便,另一方面也给一些居心不良者留下后门。形成很多木马程序。这就需要对软件在设计架构时考虑到安全方面。1.3 论文研究的主要内容远程控制是在网络上由一台电脑(主控端Remote/客户端)去控制另一台电脑(被控端Host/服务器端)的技术,大多数时候我们所说的远程控制往往指在局域网中的远程控制而言。当操作者使用主控端电脑控制被控端电脑时,可以启动被控端电脑的应用程序,可以使用被控端电脑的文件资料,甚至可以利用被控端电脑的打印机和通信设备来进行打印和访问互联网。本论文的研究内容为:本系统是基于Windows Socket 网络编程技术,采用C/S(客户端/服务端)模式,在C+软件开发平台上设计的一个系统。根据需要及应用定位,通过几种计算机远程控制关键技术,并通过编程实现客户机对服务端远程控制的基本功能,如获取目标计算机的屏幕图像、窗口、及进程列表,提取远端键盘事件,打开、关闭、添加、删除目标计算机的文件或文件目录,控制目标计算机鼠标移动,上传下载文件,关闭、重起系统等,使操作远程计算机如操作本地计算机一样。本系统有以下优点:方便,可靠,操作简单,使用高效,稳定性,安全性,可扩展性良好。通过这些部分的可视化实现,可以实现像操作本地计算机一样对远程计算机进行操作,达到监控的目的。1.4 本章小结本章主要介绍了课题的选题背景、目的和意义,然后对国内外远程控制技术的发展历史进行了总结,并简要分析了有代表性的国内外远程控制软件。如德国的TeamViewer,中国的灰鸽子软件和网络人软件。最后介绍了本文的主要研究内容。第2章 开发平台基础知识2.1 C+语言本开发平台采用的编程语言是C+语言。和C语言一样,C+也是在贝尔实验室诞生的,Bjarne Stroustrup于20世纪80年代在这里开发出了这种语言。C+语言是一种使用非常广泛的电脑程序设计语言,是在C语言的基础上发展演变而来的。它是一种静态数据类型检查的、支持多范型的通用程序设计语言。C+支持过程化程序设计、数据抽象化、面向对象程序设计、泛型程序设计、基于原则设计等多种程序设计风格。C+语言既保留了C语言的有效性、灵活性、便于移植等全部精华和特点,又添加了面向对象编程的支持,具有强大的编程功能,可方便地构造出模拟现实问题的实体和操作;编写出的程序具有结构清晰、易于扩充等优良特性,适合于各种应用软件、系统软件的程序设计。用C+编写的程序可读性好,生成的代码质量高,运行效率仅比汇编语言慢10%20%。C+语言具有以下特点: 1.C+是C语言的超集。它既保持了C语言的简洁、高效和接近汇编语言等特点,又克服了C语言的缺点,其编译系统能检查更多的语法错误,因此,C+比C语言更安全。2.C+保持了与C语言的兼容。绝大多数C语言程序可以不经修改直接在C+环境中运行,用C语言编写的众多库函数可以用于C+程序中。3. 支持面向对象程序设计的特征。C+既支持面向过程的程序设计,又支持面向对象的程序设计。4.C+程序在可重用性、可扩充性、可维护性和可靠性等方面都较C语言得到了提高,使其更适合开发大中型的系统软件和应用程序。5.C+设计成静态类型、和C同样高效且可移植的多用途程序设计语言。6.C+设计成直接的和广泛的支援多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。7.C+设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。8.C+设计成尽可能与C兼容,籍此提供一个从C到C+的平滑过渡。9.C+避免平台限定或没有普遍用途的特性。10.C+不使用会带来额外开销的特性。11.C+设计成无需复杂的程序设计环境。2.2 OOP简介面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。OOP 主要有以下的概念和组件: 组件 数据和功能一起在运行着的计算机程序中形成的单元,组件在 OOP 计算机程序中是模块和结构化的基础。 抽象性 程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力。 封装 也叫做信息封装:确保组件不会以不可预期的方式改变其它组件的内部状态;只有在那些提供了内部状态改变方法的组件中,才可以访问其内部状态。每类组件都提供了一个与其它组件联系的接口,并规定了其它组件进行调用的方法。 多态性 组件的引用和类集会涉及到其它许多不同类型的组件,而且引用组件所产生的结果得依据实际调用的类型。 继承性 允许在现存的组件基础上创建子类组件,这统一并增强了多态性和封装性。典型地来说就是用类来对组件进行分组,而且还可以定义新类为现存的类的扩展,这样就可以将类组织成树形或网状结构,这体现了动作的通用性。2.3 MFCMFC是Microsoft Foundation Classes的缩写,是微软提供的windows平台下的应用程序框架,原理是将繁杂的Win32 API封装成类的形式,然后提供标准化的简单易用API接口,比如对窗口类的封装,消息映射机制;对画刷画笔字体及位图的封装等。减少了程序开发人员大量的重复性编码工作,使程序开发人员把更多的时间和精力放到程序设计和实现上,极大的提高了Windows平台下应用程序的开发效率。MFC类库中囊括了各种各样的类,而每个类包含多个函数和变量,平时开发中很少有人能全部记住,其实也不用去记忆MFC的函数和使用方法,微软提供了MSDN开发手册,在上面可以轻松的查到Windows开发平台下所有的api,包括对函数的参数,返回值以及错误信息的解释,有的还附带示例代码帮助理解和使用。MFC的消息响应机制,初学者进行windows应用程序开发时,消息以及消息映射是个很重要的概念。Windows应用程序是消息驱动的,应用程序不能直接获取用户的操作,如点击鼠标左键,操作系统检测到操作事件后,会向相应的应用程序队列发送消息。Windows程序都维护有自己的消息队列,保存了队列消息(当然也有非队列消息,它们直接发给窗口),并用过消息循环对消息进行处理。消息循环首先通过 GetMessage取得消息并从队列中移走,对于加速键会调用TranslateAccelerator函数,对其进行翻译和处理,如果处理成功就不再调用TranslateMessage函数。如果不是加速键,就进行消息的转换和派发,让目的窗口的窗口过程来处理消息。真正处理消息的是所谓的窗口过程(LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)),这个函数的参数记录了过程对应的窗口、消息的ID以及参数,在其内部开发者可以实现自己需要的消息处理功能。 2.4 Visual C+集成开发环境Visual C+是微软提供的面向对象的可视化集成开发环境IDE,所谓可视化就是所见即所得,集成开发环境中的编辑器用于编写或者修改代码;编译器和连接器用于生成中间文件和可执行文件;调试器是在程序出错时用于调试;同时还有解决方案管理器用于管理多个项目,更好的协作;现在主流的Windows可视化开发环境的集成工具有Eclipse C+、Code:Blocks、Dev C+,Visual Studio系列,而Visual Studio系列工具是在Windows平台最好的开发工具,有vc 6.0、Visual Studio 2005、Visual Studio 2008、Visual Studio 2010、Visual Studio 2013多个版本,本论文代码是采用Visual Studio 2008进行编写开发的。Visual Studio 2008采用拖曳式便能完成软件的开发。简简单单的操作便可以实现一个界面的生成。但拖曳的界面,也应当有相应的代码来实现功能。Microsoft Visual Studio 2008支持C#、C+ 、VB。 可以快速实现相应的功能。VS不是开发C#应用程序所必需的开发工具或集成开发环境(IDE),但使用它可以使任务更简单一些。可以在基本的文本编辑器中处理C#源代码文件,在使用命令行应用程序把代码编译到程序集中。Visual Studio 2008特点有:升级的软件测试功能及工具,为软件质量严格把关;搭配Windows 7,Silverlight4 与 Office,发挥多核并行运算威力;支持最新C+标准,增强IDE,切实提高程序员开发效率以及创建美感与效能并重的新一代软件。对于编程初学者,很容易把Visual C+ 和MFC搞混淆,Visual C+是微软集成开发环境,是用来编辑代码文件和编译链接代码的,以及调试运行程序;MFC是微软开发的基础类库。里面封装了但是两者都仅仅是软件开发的工具而已,初学编程切勿将大量的时间和精力花在工具的学习上,而要集中在程序的设计上,解决问题上。2.5 网络通信基础2.5.1 ISO 七层模型进行VC网络编程之前,首先了解下计算机网络通信的基本框架和工作原理,在两台以上计算机之间进行网络通信时,通信的双方必须遵守相同的通信原则和数据格式。七层OSI参考模型如下图1:图1从下至上依次是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。物理层:实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。数据链路层:实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。网络层:数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进出路由等控制,将信息从一个网络设备传送到另一个网络设备。传输层:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。传输层中,包括了TCP和UDP协议两个编程开发中常用协议,TCP协议是面向连接的可靠的通信协议,TCP的超时重传机制,有效的保证的TCP网络通信中数据传输的可靠性。会话层:组织和协调两个会话进程之间的通信,并对数据交换进行管理。表示层:直接向用户提供服务,完成用户希望在网络上完成的各种工作。上图中OSI参考模型的各层传输的数据和控制信息具有多种格式,常用的信息格式包括帧、数据包、数据报、段、消息和数据单元。数据帧(Frame):一种信息单位,它的起始点和目的点都是数据链路层。数据包(Packet):一种信息单位,它的起始和目的地是网络层。数据报(Datagram):通常是指起始点和目的地都使用无连接网络服务的的网络层的信息单元。段(Segment):通常是指起始点和目的地都是传输层的信息单元。消息(message):是指起始点和目的地都在网络层以上(经常在应用层)的信息单元。数据单元(data unit)泛指许多信息单元。常用的数据单元有服务数据单元(SDU)、协议数据单元(PDU) 总结下,数据链路层的PDU叫做Frame(帧);网络层的PDU叫做Packet(数据包);TCP的叫做Segment(数据段);UDP的叫做Datagram(数据报)。2.5.2 七层OSI参考模型的作用OSI 模型将通信过程分为七层,每一层的功能模块相对独立,完成自己相应的任务或功能,从而使得软件技术人员能够更专注的研究自己的那一层,减少了各层之间兼容性问题以及API设计不合理问题。而且当其中一层提供的解决方案更新时,仅仅是替换掉对应层的代码,并不会影响其他层的正常运行。 2.6 Client和Server2.6.1 Client/Server简介当采用C/S模型进行网络通信时,一方为服务器,一方为客户端。C/S模型主要应用于局域网系统中,主要分为两层C/S和三层C/S架构,比较经典的是我们论文中使用两层C/S,如图2。 图2 两层C/S架构服务器端主要承担事务逻辑方面的处理,以及数据的存储、获取及更新。我们平时电脑上运行的软件如qq,迅雷,浏览器都是客户端,客户端是连接用户和服务器之间的桥梁,客户端接收用户的输入请求,进而将请求转达给服务器,服务器解析请求做出相应的逻辑处理,将结果返回给客户端进行显示,或者服务器也可以将请求缓存在本地缓存文件或者缓存数据库中供以后使用。开发游戏客户端时,为了避免客户端和服务器之间的频繁交互浪费网络流量,也会在客户端本地进行一些简单计算,数据存储或缓存等方面的事务。三层C/S架构是在两层C/S之间加了中间通信层,起中转数据的作用,好处就是程序增强了可拓展性,在中间通信层可以自由添加一些功能。2.6.2 Client/Server简介Client/Server模式曾在历史长河中荣耀一时,则必然有其亮点之处。客户端和服务器直接相连,可以直接操作本地文本,减少获取文本内容的时间和精力。减少了通信流量,这对于客户来说可以节约一大笔费用。在C/S模式盛行的年代,很多都是控制台窗口程序,而C/S模式程序能够提供客户端操作界面,可以提高客户的视觉体验,满足客户需求。经过长期的时间检验,人们也发现了C/S存在的不足,比如当用户数增多服务器会出现通信拥堵,响应速度慢等情况。使用C/S模式程序必须安装一个客户端程序,只有安装了客户端才能访问服务器。由于用户需要安装客户端,每个操作系统都需要开发一个对应版本的客户端供用户使用,安装部署困难,同时开发成本和后期维护成本较高。2.7 事件驱动的程序设计传统的MS-DOS程序主要采用顺序的、关联的、过程驱动的程序设计方法。一个程序是一系列预先定义好的操作序列的组合,它具有一定的开头、中间过程和结束。程序直接控制程序事件和过程的顺序。这样的程序设计方法是面向程序而不是面向用户的,交互性差,用户界面不够友好,因为它强迫用户按照某种不可更改的模式进行工作。它的基本模型如图32所示。事件驱动程序设计是一种全新的程序设计方法,它不是由事件的顺序来控制,而是由事件的发生来控制,而这种事件的发生是随机的、不确定的,并没有预定的顺序,这样就允许程序的的用户用各种合理的顺序来安排程序的流程。对于需要用户交互的应用程序来说,事件驱动的程序设计有着过程驱动方法无法替代的优点。它是一种面向用户的程序设计方法,它在程序设计过程中除了完成所需功能之外,更多的考虑了用户可能的各种输入,并针对性的设计相应的处理程序。它是一种“被动”式程序设计方法,程序开始运行时,处于等待用户输入事件状态,然后取得事件并作出相应反应,处理完毕又返回并处于等待事件状态。它的框图如图3所示: 图3事件驱动围绕着消息的产生与处理展开,一条消息是关于发生的事件的消息。事件驱动是靠消息循环机制来实现的。消息是一种报告有关事件发生的通知。消息类似于DOS下的用户输入,但比DOS的输入来源要广,Windows应用程序的消息来源有以下四种:1 输入消息:包括键盘和鼠标的输入。这一类消息首先放在系统消息队列中,然后由Windows将它们送入应用程序消息队列中,由应用程序来处理消息。 2 控制消息:用来与Windows的控制对象,如列表框、按钮、检查框等进行双向通信。当用户在列表框中改动当前选择或改变了检查框的状态时发出此类消息。这类消息一般不经过应用程序消息队列,而是直接发送到控制对象上去。3 系统消息:对程序化的事件或系统时钟中断作出反应。一些系统消息,象DDE消息(动态数据交换消息)要通过Windows的系统消息队列,而有的则不通过系统消息队列而直接送入应用程序的消息队列,如创建窗口消息。4 用户消息:这是程序员自己定义并在应用程序中主动发出的,一般由应用程序的某一部分内部处理。在DOS应用程序下,可以通过getchar()、getch()等函数直接等待键盘输入,并直接向屏幕输出。而在Windows下,由于允许多个任务同时运行,应用程序的输入输出是由Windows来统一管理的。Windows操作系统包括三个内核基本元件:GDI, KERNEL ,USER。其中GDI(图形设备接口)负责在屏幕上绘制像素、打印硬拷贝输出,绘制用户界面包括窗口、菜单、对话框等。系统内核KERNEL支持与操作系统密切相关的功能:如进程加载,文本切换、文件I/O,以及内存管理、线程管理等。USER为所有的用户界面对象提供支持,它用于接收和管理所有输入消息、系统消息并把它们发给相应的窗口的消息队列。消息队列是一个系统定义的内存块,用于临时存储消息;或是把消息直接发给窗口过程。每个窗口维护自己的消息队列,并从中取出消息,利用窗口函数进行处理。2.8 本章小结本章主要是对一些开发时需要运用的重要知识点进行了介绍。包括了对开发语言C+的介绍、对面向对象编程思想的介绍、对于将要使用的MFC框架的介绍、对于开发环境Visual C+的介绍、对网络协议的介绍、对于Windows程序消息响应的介绍。第3章 需求分析3.1 系统可行性分析可行性研究的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解决,是否有可行的方法。本课题设计在局域网中,而且专门为企业网内部设计,不受网络流量的约束。该系统操作简单,客户端安装后无需其他操作,服务端待客户端自动连接后,则可以对其屏幕、文件、进程进行操作,完全像操作本地机器一样简单。综上分析,本课题的操作是可行的。3.2 系统基本功能远程办公利用远程控制软件办公版的方式不仅大大缓解了城市交通状况,减少了环境污染,还免去了人们上下班路上奔波的辛劳,更可以提高企业员工的工作效率和工作兴趣。远程教育例如,商业公司可以远程控制软件企业版实现和用户的远程交流,采用交互式的教学模式,通过实际操作来培训用户,使用户从技术支持专业人员那里学习示例知识变得十分容易。而教师和学生之间也可以利用这种远程控制技术实现教学问题的交流,学生可以不用见到老师,就得到老师手把手的辅导和讲授。学生还可以直接在电脑中进行习题的演算和求解,在此过程中,教师能够轻松看到学生的解题思路和步骤,并加以实时的指导。远程维护计算机系统技术服务工程师或管理人员通过远程控制软件旗舰版对目标维护计算机或所需维护管理的网络系统,进行配置、安装、维护、监控与管理,解决以往服务工程师必须亲临现场才能解决的问题。大大降低了计算机应用系统的维护成本,最大限度减少用户损失,实现高效率、低成本。远程协助任何人都可以利用一技之长通过远程控制软件办公版为远端电脑前的用户解决问题。如安装和配置软件、绘画、填写表单等协助用户解决问题。远程指挥利用软件的视频交互功能,在部队远程指挥系统中实现多个指挥中心在同一大屏幕上同时投影,各指挥中心之间可互相看到对方的实时视频。3.3 功能需求分析功能需求是经过实际调研后,提出的系统需要实现的功能或服务。根据市面上主流的远程控制软件进行对比分析和调研,该系统包含的功能如下:1. 文件管理功能。不管是远程办公还是远程技术都需要访问客户端中的文件和文件夹,操作指定文件。有时在客户端上缺少某些动态链接库导致程序无法运行,需要服务器上传文件到客户端进行修复解决。当客户端环境不适合现场调试运行时,可以通过下载功能将关键文件下载到服务器本地硬盘中慢慢找到解决问题的方法。文件操作功能包括:文件上传、文件下载、删除文件或文件夹、新建文件或文件夹、运行文件功能。该模块的用例图如下:2. 屏幕查看和监控功能。在远程技术支持时,软件有了屏幕监控功能,可以将客户难以描述的现象和问题通过画面的形式呈现在技术人员眼前,便于技术人员掌握客户现场情况,从而更快更好的解决问题,极大的提升了解决问题的效率。3. 进程管理功能 使用系统的过程中,不可避免的会与进程打交道,查看系统当前进程是否有可疑进程,关闭进程等等,比如服务端发送获取进程信息命令到客户端,客户端接收命令后进行解析,然后枚举出进程的pid,进程名称以及进程路径等信息,然后以进程信息结构体的方式发送到服务器,服务器就可以针对进程进行操作。 4.Cmd远程命令行执行 在远程协助或者技术支持时,由于采用桌面监控的方式采用图片传输的方式,导致实时性和操作流畅度不高,更快捷的方式是采用命令行cmd来执行操作,其方便快捷并占用系统空间小,有效解决了远程时略微卡顿的问题,提高了远程操作的效率。3.4 本章小结本章已进入软件的需求分析阶段。首先对系统的可行性进行了分析,然后分析了主流远程控制系统的基本功能,并由此进行了细致的功能需求的分析。对每一个功能模块进行了详细的分析和设计。第4章 详细设计根据系统的主要功能及上一章的概要设计,系统进入详细设计阶段。由于代码较多,本章在说明部分功能能够时,只介绍了相关函数和某些关键的代码语句。4.1 开发环境本系统采用Visual Studio 2008 + MFC 框架进行开发,客户端采用VmWare虚拟机进行测试。4.2 客户端与服务器连接设计4.2.1 服务器端实现原理远程监控的思想是通过SOCKET和利用应用程序的消息机制,监控程序的客服端与被监控程序的服务器端进行数据交换,达到监控与被监控的目的。根据这个思想,需要两个独立的程序,SERVER REMOTE CONTROL和CLIENT REMOTE CONTROL。Server remote control所需要的模块如下。网络模块:负责监听客服端的连接,负责接收并处理客服端发过来的消息命令,在本机上处理这些消息并发送各种数据,如屏幕数据,命令反馈数据等,到客服端监听程序。编码解码模块:负责对数据进行哈夫曼压缩。这个模块是根据客户端的要求来采用具体的编码解码方法的。主框架模块:负责SERVER端窗口的消息处理4.2.2 客户端实现原理网络模块:负责连接到服务器的监听SOCKET;负责向服务器发送各种操作命令,如鼠标,键盘,各种参数消息等命令。主框架模块:负责CLIENT的窗口消息处理4.2.3 数据流实现原理首先启动Sever Remote Control的程序,开启监听端口,将CLIENT REMOTE CONTROL 连接到服务器的端口,之后SERVER开启一个与客服端通信的线程这个线程专门负责接收和处理客服端发送过来的消息,并在本机上执行相关命令。然后将当前改变区域的屏幕的内容发送到客服端。而当客服端连接到服务器端之后,客服端程序就可以根据服务器端传过来的屏幕数据在本地机上显示出屏幕内容,从而作出各种鼠标,键盘操作,以及一些通用的更新。这些操作会通过SOCKET传给服务器端。服务器端再根据这些消息做出相应的操作。需要注意的是,服务器端刷屏的时候并不是将整个屏幕都传给客服端,因为整个屏幕图片的数据量比较大,当前网络负载也不是很稳定的条件下,该程序是很不稳定的。一个可行的办法是将屏幕的划分成网格块,屏幕的刷新是以网格为单位的,只需要将这些变化的屏幕数据发送给客服端即可。4.2.4 与服务器端相关 的API1 WSAEnumprotocol函数介绍用来获得系统中安装协议的相关信息。2 WSAStartup函数介绍 在可以调用一个Wi n s o c k函数之前,必须先加载一个版本正确的Wi n s o c k库。int WSAStartup(WORD wVe r s i o n R e q u e s t e d , L P W S A D ATA lpWSAData)第一个参数是准备加载的Wi n s o c k库的版本号。就目前的Wi n 3 2平台而言,Winsock 2库的最新版本是2 . 2。唯一的例外是Windows CE,它只支持Winsock 1.1版。如果需要Winsock 2.2版,指定这个值( 0 x 0 2 0 2)或使用宏M A K E W O R D ( 2 , 2 )即可。高位字节指定副版本,而低位字节则指定主版本。第二个参数是W S A D ATA结构,它是调用完成之后立即返回的。W S A D ATA包含了W S A S t a r t u p加载的关于Wi n s o c k版本的信息。3 WSACleanup函数介绍 在结束Wi n s o c k库,而且不再需要调用任何Wi n s o c k函数时,附带例程会卸载这个库,并释放资源4 WSASocket函数介绍 SOCKET WSASocket( int af,int t