已阅读5页,还剩62页未读, 继续免费阅读
(通信与信息系统专业论文)一种实现局域网内屏幕共享的新方法.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
哈尔滨工程大学硕士学位论文 摘要 随着计算机科学的飞速发展,计算机辅助教育( c a i ) 在教学实践中得 到了广泛的应用,在多媒体课件中大都包含一种实现局域网内多台计算机屏 幕共享的功能。 本文提出了一种实现局域网内屏幕共享的新方法。该方法的创新之处在 于课件服务端中引入了事件驱动机制和多播。与传统的截取屏幕的方式和使 用广播传输数据的方式相比,新方法不仅减少了对教师端和网络资源的占用, 也减少了对未参加教学的网内其它机器的影响,而且使得跨网教学更加方便 可行。 文中详细叙述了提供屏幕共享功能的课件的服务端和客户端的实现方法 和过程,并给出了本人独立完成的课件服务端和客户端程序的具体代码。其 中包括服务端的事件驱动,屏幕的截取和压缩,以及控制信息和数据的发送, 客户端的数据接收,j p e g 文件的解压缩和位图文件的显示。 经过测试,分别安装在教师机和学生终端的课件服务端和客户端能够实 现局域网内屏幕共享的功能,为局域网屏幕共享教学提供了一种新的方法。 关键词:屏幕共享;事件驱动;屏幕截取;图像压缩;多播 哈尔滨工程大学硕士学位论文 a b s t r a c t w i t ht h e r a p i dd e v e l o p m e n to ft h ec o m p u t e rs c i e n c e c o m p u t e r - a s s i s t e d i n s t r u c t i o n ( c a i ) h a sp l a y e dm o r ea n dm o r ei m p o r t a n tr o l ei nt h et e a c h i n g p r a c t i c e t h e r ei sa l w a y saf u n c t i o nt h a tr e a l i z e st h ec o m m o n l ys h a r e ds c r e e n w i t h i nl a ni nm o s to f t h em u l t i m e d i ac a i i nt h i s p a p e r ,an e wm e t h o di sp r o v i d e dt o r e a l i z et h ec o m m o n l ys h a r e d s c r e e n sw i t h i nl a nb a s e do nt h ee v e n ta n dt h em u l t i c a s t t h r o u g ht h ec o m p a r e w i t ht h eo r i g i n a lm e t h o do fg e t t i n gt h es c r e e na n ds e n d i n gd a t ab yb r o a d c a s t a c o n c l u s i o nc a nb er e a c h e dt h a tt h eb e wm e t h o dn o t o n l y r e d u c e st h e r e s o u r c e - o c c u p y i n g o f t h et e a c h e rt e r m i n a la n dt h eo t h e rt e r m i n a l st h a td on o t j o i n t h el e c t u r ew i t h i nt h el a n ,b u ta l s om a k e st h el e c t u r et h r o u g hl a n sm o r e f l e x i b l e i ti ss t a t e di nd e t a i lt h a tt h em e t h o da n dp r o c e s so fr e a l i m n gt h es e r v e r t e r m i n a la n dt h ec l i e n tt e r m i n a lt h a tp r o v i d et h ef u n c t i o no f s h a r i n gs c r e e ni nt h i s p a p e r a n dt h es p e c i f i cc o d e so ft h es e r v e rt e r m i n a la n dt h ec l i e n tt e r m i n a l t h a tim a d ei n d i v i d u a l l ya r eg i v e n 1 1 1 es e r v e rt e r m i n a li sm a d eo ft h em o d e l so f t h ee v e n t ,s c r e e n c a p t u r e ,i m a g ec o m p r e s s i o n a n d s e n d i n gd a t a t h e c l i e n t t e r m i n a li n c l u d e st h em o d e l so fr e c e i v i n gd a t a ,i m a g ed e c o m p r e s s i o na n d s h o w i n gi m a g e t h r o u g ht e s t i n g ,t h es e r v e rt e r m i n a lo nt h ec o m p u t e ro f t h et e a c h e ra n dt h e c l i e n tt e r m i n a lo i lt h ec o m p u t e ro ft h es t u d e n ta r ea b l et or e a l i z i n gt h ef u n c t i o no f s h a r i n gs c r e e n sw i t h i nl a n a n d p r e s e n ta n e wm e t h o df o rt e a c h i n ga n dl e a r n i n g b a s e do n s h a r i n gs c r e e nw i t h i n l a n k e y w o r d s :c o m m o n l y s h a r e ds c r e e n s ,e v e n tb a s e d ,s c r e e nc a p t u r e ,i m a g e c o m p r e s s i o n ,m u l t i c a s t 哈尔滨工程大学 学位论文原创性声明 本人郑重声明:本论文的所有工作,是在导师的指导 下,由作者本人独立完成的。有关观点、方法、数据和文 献等的引用己在文中指出,并与参考文献相对应。除文中 已经注明引用的内容外,本论文不包括任何其他个人或集 体已经公开发表的作品成果。对本论文的研究作出重要贡 献的个人和集体均已在文中以明确方式标明。本人完全意 识到本声明的法律后果由本人承担。 作者( 签字) :盔亟 日期:2 0 0 4 年2 月日 哈尔滨工程大学硕士学位论文 1 1 研究背景 第1 章绪论 在电子计算机问世之初,就有人设想把它用于教育。美国从5 0 年代末 6 0 年代初就开始从事这方面的研究工作。计算机辅助教育的研究及应用不过 4 0 多年的历史,但发展非常迅猛。计算机在教育中的应用计算机辅助教 育( c o m p u t e r b a s e de d u c a t i o n ,简称c b e ) 已逐步发展成为一个新兴的交叉学 科,形成了它自己的理论、概念、方法和技术。c b e 的教学应用主要包括两 个方面: 作为教学目标:主要是教学生计算机知识的学习和掌握计算机操作技 能( 包括程序设计知识的学习、硬件知识、上网操作等) 。 作为教学工具( 计算机辅助教学c o m p u t e r a s s i s t e di n s t r u c t i o n ,简 称c a i ) :将计算机用作教学媒体,辅助教师进行教学活动或代替教师执行部 分教学任务。 c a i 的发展过程按时间顺序大致可分为四个阶段: 6 0 年代,计算机辅助教学随着行为主义学习理论提供的教学机器和 程序教学的兴起而兴起。当时的c a i 主要遵循程序教学的主要原理 7 0 年代,微机的出现与发展,使各类学校有条件购买计算机。同时 教学软件在数量上种类上有很大的发展,导致了c a i 软件的蓬勃发展。为后 来的c a i 高潮作了准备。 8 0 年代,人们把学习计算机程序设计作为计算机文化的主要内容, 认为要了解使用计算机必须要弄懂计算机执行的命令、语言。这种思想流行 了若干年,对当时我国的计算机教育也有相当大的影响。到了8 0 年代中期, 此观点才被予以否定。人们认识到,多数接触计算机的人主要是应该会使用 而不在于是否会编程。 9 0 年代,随着多媒体技术的引入,使c a i 更加丰富多彩。 我国c a i 的发展,大体上经历了三个阶段: 第一阶段是从6 0 年代开始的。由于国内的具体情况,当时从事这项工作 哈尔滨工程大学硕士学位论文 的人员很少,主要是进行探索,没有走出实验室。 第二阶段是8 0 年代开始,这期间c a i 研究有了一定的发展,一些有条件 的高校教师开始自己动手研制c a i 软件。 第三阶段从9 0 年代开始,c a i 在国内引起了广泛的兴趣。各级各类学校 开始进行c a i 教学的探索与实践。目前国内各地区各学校计算机辅助教育的 应用极不平衡,许多高校建立了c m 实验室或c a i 中心并开发出不少优秀的 c a i 软件。 1 2 研究的目的和意义 虽然现在有很多种功能强大的c a i 教学课件在教学实践中得到了比较广 泛的应用,但是在设计思想上和技术的使用上还存在很多不足。 在多媒体课件中大都包含一个实现屏幕共享的功能,该功能是源自教学 需求的产物,它的主要作用是,在局域网教学环境中,当教师通过计算机给 学生们讲解知识或者演示某种程序如何使用的时候,安装在教师机上的课件 会根据教师的指令控制学生终端的课件进入屏幕同步状态并实时的截取本机 的屏幕,经过压缩,然后传递给局域网中的学生终端,学生终端的课件根据 来自教师机发布的命令接收屏幕数据,经过解压缩之后将图像数据显示在屏 幕上。为了保证在演示的过程中,学生终端的屏幕能够与教师端的变化的屏 幕保持同步显示,就需要教师端的课件循环截取和发送屏幕图像数据,学生 端的课件相应的循环接收和显示。在教师停止演示之后,教师端课件停止截 取屏幕并通知学生端课件停止接收数据并把屏幕还原成同步之前的样子,这 样学生就可以根据刚才演示的内容进行相应的练习。 为了保持学生端的画面连贯,就需要保持一定的刷新率,这样教师端就 需要以一定频率( 如每秒2 5 帧) 来截取和发送图像数据。由于每次屏幕的截取, 压缩,发送都需要占用很多的系统资源,再加上演示程序,容易造成系统资 源的不足,导致画面不连贯,甚至死机。 而且在通常情况下教师端需要给多个学生端发送数据,所以现有的软件 通常采用广播的方式发送图像数据。采取这种方式存在一个缺点,那就是所 有局域网内的终端接收到广播数据报之后,网卡不能判定是否有本机的程序 哈尔滨工程大学硕士学位论文 对这些数据包感兴趣,所以网卡会将数据包放入内存中,中断c p u ,然后由 系统决定是否忽略该帧。因此以高速度产生i p 数据报的应用系统( 如音频, 视频应用系统1 会严重影响网内未参加教学的终端。而且为了实现跨网传输, 需要在服务器安装转发图像数据的软件。 为了减少定时截取,压缩和发送屏幕数据造成的不必要的对教师端资源 的占用,使用广播发送数据对其它未参加教学的机器的影响。以及为小范围 的教学交流提供一种新的实现局域网内屏幕共享的工具。本文提出了一种实 现局域网内屏幕共享的新方法。本文的主要工作是编程实现能够提供局域网 内屏幕共享功能的课件的服务端和客户端,其中包括服务端的事件驱动,屏 幕的截取和压缩,以及控制信息和图像数据的发送,客户端的数据接收,j p e g 文件的解压缩和位图文件的显示等部分。并在教师端课件中创新地引入事件 驱动机制,根据改变屏幕图像的事件发生与否来决定是否截取屏幕图像,如 果改变屏幕图像的事件发生,则自动截取屏幕并发送,若没有事件发生,则 不进行处理。而且在教师端改用多播的方式向学生终端发送图像数据。与广 播相比,只有参与了多播组的学生终端才对多播数据报进行协议处理。这样 不仅减少了对教师机的系统资源的占用,也减小了对网内未参加教学的终端 的影响。而且通过多播的方式很容易实现跨网传输,不需要在服务器上安装 任何软件。 1 3 开发环境v is u a ic + + 简介 v i s u a lc + + 不仅仅是一个编译器,它是一个全面的应用程序开发环境, 是m i c r o s o f tv i s u a ls t u d i o 的一部分。v c 包括: 1 、资源编辑器,它可以为菜单选择所见即所得的编辑器,它可以编辑图标, 位图,字符串; 2 、对话框编辑器,可以插入标准的w i n d o w 通用控件和标准控件; 3 、c c + + 编译器,v c 可以用来处理c 和c + + 代码,主要是通过文件后缀名来 分辨; 4 、资源编译器,从资源编辑器中读取一个资源描述文件,并生成一个二进制 r e s 文件提供给连接器; 哈尔滨工程大学硕士学位论文 5 、连接器,读入由c c + + 编译器产生的o b j 文件和由资源编译器产生的r e s 文件并连接形成可执行文件; 6 、调试器,设置断点对程序进行调试,还可以在调试时显示变量的值; 7 、a p p w i z a r d ,它是一个代码生成器,根据用户要求产生应用程序的工作框 架; 8 、c l a s s w i z a r d ,它是一个辅助编写代码的工具,极大方便了代码的编写工 作; 9 、源程序浏览器,从类和函数的角度来了解别人编写的源程序; 1 0 、联机帮助,包含各种帮助信息; 1 1 、w i n d o w s 诊断工具,源代码控制,g a l l e r y ,m i c r o s o f t 基本类库,m i c r o s o f t a c t i v e x 模板库。 1 4m f o m f c 的英文全称是m i c r o s o f tf o u n d a t i o nc l a s s e s ,即微软的基本类库, m f c 的本质就是一个包含了许多微软公司已经定义好的对象的类库,我们知 道,虽然我们要编写的程序在功能上是千差万别的,但从本质上来讲,都可 以化归为用户界面的设计,对文件的操作,多媒体的使用,数据库的访问等 等一些最主要的方面。这一点正是微软提供m f c 类库最重要的原因,在这个 类库中包含了一百多个程序开发过程中最常用到的对象。在进行程序设计的 时候,如果类库中的某个对象能完成所需要的功能,这时我们只要简单地调 用已有对象的方法就可以了。我们还可以利用面向对象技术中很重要的“继 承”方法从类库中的已有对象派生出我们自己的对象,这时派生出来的对象 除了具有类库中的对象的特性和功能之外,还可以由我们自己根据需要加上 所需的特性和方法,产生一个更专门的,功能更为强大的对象。当然,我们 也可以在程序中创建全新的对象,并根据需要不断完善对象的功能。但是工f 是由于m f c 编程方法充分利用了面向对象技术的优点,它使得我们编程时极 少需要关心对象方法的实现细节,同时类库中的各种对象的强大功能足以完 成我们程序中的绝大部分所需功能,这使得应用程序中程序员所需要编写的 代码大为减少,有力地保证了程序的良好的可调试性。 哈尔滨工程大学硕士学位论文 最后要指出的是m f c 类库在提供的对象的各种属性和方法都是经过谨慎 的编写和严格的测试,可靠性很高,这就保证了使用m f c 类库不会影响程序 的可靠性和正确性“1 。 1 5 本文的主要内容安排 本文第l 章介绍了计算机辅助教学的发展过程,给出了研究的目的与意 义,将事件驱动和多播引入到了c a i 课件的屏幕共享功能之中,最后还简单 介绍了本论文研究过程当中需要用到的开发环境和类库。 本文第2 章从软件工程的角度分析和定义了软件的需求,指出了软件实 现的可能性,对不同方案进行了比较,并根据需求对软件的功能和结构进行 了划分。 本文第3 章介绍了作为第三方软件的c a i 课件服务端同步截取屏幕的基 础,操作系统的分时,消息传递机制,以及钩子函数和动态连接库。将事件 驱动机制引入到了课件的服务端并且详细叙述了实现的过程。 本文第4 章介绍了j p e g 压缩的基本知识,讲述了根据事件标志,使用 a p i 函数截取当前屏幕并保存为位图文件,然后利用一个已有的动态连接库 提供的函数将位图文件压缩成j p e g 文件的过程。 本文第5 章首先介绍了网络编程接口和协议的选择,通过与广播相比, 论述了利用多播方式发送数据的优点以及具体的实现过程。 本文第6 章叙述了客户端课件以异步套接字接收控制信息,同步套接字 接收数据信息的具体实现方法。 本文第7 章叙述了学生终端将接收到的j p e g 文件解压缩成位图文件,并 且通过位图对象将位图文件显示在屏幕上的具体实现方法。 本文第8 章论述了课件的服务端和客户端的整体结构和功能,并且给出 了课件实现的功能的示意图。 哈尔滨工程大学硕士学位论文 第2 章软件的功能和结构划分 2 1 需求的分析和定义 随着计算机技术和网络的发展,以计算机辅助教育为基础的网络教育得 到了很大的发展。网络教育指的是在网络环境下,以现代教育思想和学习理 论为指导,充分发挥网络的各种教育功能和丰富的网络教育资源优势,向教 育者和学习者提供一种网络教和学的环境,传递数字化内容,开展以学习者 为中心的非面授教育活动。网络教学课件是在网络教育过程中使用得很广泛 的一种教学材料。 随着计算机在各行各业中起到越来越重要的作用,各种大中专院校都开 设了很多相应的计算机课程,但是仍有许多课程( 如程序语言教学和专业软件 的使用) 采取传统的分开式教学,课堂上老师利用传统的黑板进行教学,上机 课学生自己进行上机练习并结合教师进行个别指导的方式。这样做虽然有利 于知识的讲解和指导。但是也有其缺点,首先,使用传统的方式讲解程序语 言的运行环境和专业软件的使用的时候,由于没有具体的演示,学生只能看 书上的图进行理解,不够直观,而且无法当场进行操作,影响了学生学习的 效果。其次,在学生上机的时候,老师无法通过演示让每个同学都看到具体 的实践方法,而且老师也不能控制每个学生的学习进度。这样学习的效果就 不能得到保证。 为了克服以上缺点,国内各级各类学校开始进行网络教学的探索与实践。 其中主要的是c a i 系统,c a i 系统是一种以计算机作为工具,用以产生一定 教学效果的一种新的教学系统。它是以提高教学质量,提高学习效率,使学 习者实现有效学习为根本目的。c a i 系统就其构成来看应包括:计算机系统 ( 软硬件系统) 、课件、教师、学生和信息。其中有教学功能的课件是这些要 素中最重要的要素,具有教学功能课件的开发是c a i 系统开发的核心问题。 在课件中不仅包含教学内容,而且还包含学习者与计算机之间各种信息的传 递、处理等更为广泛的内容。国内许多高校都建立了c m 实验室或c a i 中心 并开发出不少优秀的c a i 软件,相应的也出现了很多功能强大的商用c a i 教 6 哈尔滨工程大学硕士学位论文 学课件,如红蜘蛛等。 虽然这些课件在一些大学得到了比较广泛的应用,但是在现有的课件使 用过程中,发现有些地方还可以改进。 在c a i 课件的应用中,一个很主要的功能就是实现局域网内各计算机的 屏幕共享。当老师希望通过局域网演示软件的使用方法和进行语言的教学时, 为了能让学生对操作的过程和步骤有明确的认识,老师希望学生端的屏幕能 够和教师端的屏幕保持同步,这样学生就可以清楚地看到老师演示的步骤。 本软件的功能就是由这个需求出发的。下面需要对这个需求进行详细的 定义: 1 、应用环境:计算机辅助教学和软件的功能决定了软件的应用环境应该是学 校的计算机教学中心,其中应该包括计算机局域网,由于采用的多播需要有 以太网的支持,而国内目前绝大多数教学用的局域网都是以太网,所以这个 要求可以满足。 2 、系统平台:因为在不同的系统平台下,开发应用程序的接口不同,系统的 结构和运行机制也不相同。所以,通常开发的程序不能跨平台使用,也就是 在不同的操作系统下,除非使用平台无关的语言编写的程序,否则不能进行 跨平台使用,由于国内的操作系统以w i n d o w s 系列为主,所以选择相应的开 发平台。只支持在w i n d o w s 系统下使用。 3 、与其它程序的关系:由于我们要演示的程序或者文档不应该有一定的限制, 所以软件与这些程序不应该有任何联系,本软件应该是作为第三方软件独立 工作。 4 、界面的要求:由于软件的功能相对单一,所以对软件的界面没有特别的要 求,基于对话框的程序就能满足要求。 5 、各模块的可行性分析: ( 1 ) 事件驱动 通常情况下,教师要演示的程序和讲解的文档通常作为前景程序,课件 的服务端只能作为后台程序,而且系统只把鼠标和键盘的消息发送给窗口所 属的前景程序。所以课件服务端要想获得鼠标和键盘的输入信息t 就需要使 用钩子函数,钩子函数是系统提供的一种机制,通过钩子函数,服务端课件 可以在系统或者其它程序的特定或者全部的线程中添加钩子。所以课件的服 7 哈尔滨工程大学硕士学位论文 务端需要在演示程序的消息队列中安装钩子,这样当系统把鼠标和键盘的消 息发送到演示程序的消息队列中时,钩子函数会首先运行,发送一个特定的 消息给服务端程序,然后再把消息传递给消息链中的下一个处理函数。然后 在课件服务端的时间片内,再对消息进行处理。 ( 2 ) 屏幕的截取和显示 w i n d o w s 系统不允许应用程序直接访问视频存储区,而是提供了一个抽 象的接口,称作图形设备接口( g d i ) 。w i n d o w s 已经提供了各种显示卡的驱动 程序,这样我们的程序就不用关心与系统相连的显示卡的类型,可以通过调 用g d i 函数来和硬件打交道。各种g d i 函数会自动参考被称为设备环境的数 据结构。w i n d o w s 会自动将设备环境结构映射到相应的物理设备,并且提供 正确的输入输出指令,g d i 在处理速度上几乎和直接进行视频访问一样快。 在m f c 库中,设备环境是由c + + 的c d c 类对象来表示的。 通过g d i 函数能够实现截取当前屏幕并保存为位图文件以及在接收端显 示位图文件。 ( 3 ) 文件的压缩和解压缩 为了减少传输数据量而又不降低图像的质量,可以将位图文件压缩成 j p e g 文件。压缩和解压缩的具体实现是通过一个已有的动态连接库提供的函 数实现的。 ( 4 ) 数据的传输和接收 通过网络传输数据就是利用网络编程接口,使用网络编程接口访问网络 协议提供的服务。本软件根据使用环境选择了w i n d o w ss o c k e t sa p i 作为网 络编程接口。利用套接字传输和接收数据。 6 、方案的比较 ( 1 ) 微软的n e t m e e t i n g 通过微软的该软件能够在一定意义上实现屏幕共享的功能,例如某些微 软的办公软件可以通过n e t m e e t i n g 在局域网内多台计算机之间实现屏幕共 享和交流,而且稳定性比较好。但是使用该软件也存在一些缺点,例如它并 不支持s y s t e m v i e w ,e w b ,m a x p l u s i i 等非微软的第三方应用软件,所以很 多时候是无法通过它在局域网内进行演示。 ( 2 ) 定时截取 埝搴演王程大学磺学位论文 一种比较传统的屏幕共享方式是教师端的课件通过设定一个计时器,每 隔一令凌定懿辩闻,裁稿动程渗截取当耱豹屏幕,并遂李亍压缩鞠蒋输。这祥 做的缺点是由于截取和处理的宵目性,导致屏幕未发生变化时也进行处理, 占弱了不必要豹系统蜜滚。蠡莱在演示范较大鬃豹程序豹辩候,霹麓逑藏系 统资源的严重不足。由于定时截取时发送的数据比较多,而且以太网的资源 翻爱宽蹩共享懿,瑟激绘弼终逡成缀大瓣受捏,降糕了网络懿瞧悲,镁其它 机器无法正常的使用网络。 ( 3 ) 事终驱魂 由于教师在讲解和演示的过程中,厦多时候画面是静止的,所以想列如 果只在瓣纂发雯交纯懿瓣矮簧竣数撂,在教烬撬羼慕不变眩学囊捉羼蔡仍保 持前一次收到的图像,可以减少对系统和网络资源的占用。 摄攥上羲浆特点,将事俘驱动枫铡引入到谍传兹l 受务端。i 鼹掌弓| 越诗算 机屏幕变化的因素较多,可能越输入信恩引起的,也可能是程序运行引起的, 健在c a i 教学中我们关心的羼慕变化主要圭教爆棂据戆骚输入傣息弓l 越浆, 也就是鼠标和键盘的输入信息。我们称鼠标和键盘的输入称为渗件。程序根 握事 牛豹发生遴行处理裁豁为攀l 串驱动。 在现有的c a i 课件中,大都使用广播的方式发送图像数据,但是广播方 式有它囊赛的缺点。广援是指一个节点发送,予嘲中魇窍节点接收的遽傣方 式,它怒网络通信的一种重要形式。它有两个主簧用途:1 资源发现:2 网 络时闻协定。广播的特点也决定了它存在的问题,子网上所有寒参与广播应 用系统的主机也必须完成对广播数据的协议处璎,直至在u d p 胺将其善弃。 因此,以高速度产生i p 数据擐的应用系统( 如费频,视频应用系统) 会严重影 响子网上其它生机的运行,而采用多播即可解、佚这一问题。 多援是一方发送,多方面不是全部主机接收的通傣方式,多播数搬搬仅 由那些对该数据报感兴趣的接翻接收。广播一般局限予同域阐,多播不仅可 用于局域网,也可以用于广域网。这样有利于实现跨网数学。 2 2 课件功能和结构的划分 要想实现局域网内学生端计算机的屏幕与教师端僳持同步,软件应该分 9 晗自 溪王程大学壤士学往论文 为两部分,服务端和客户端。服务端安装在教师机上,客户瑞安装在希望参 蕊教学瓣客户潦上。爨务臻需要竞残3 个功麓,著置稿褒懿努袋3 个模块,1 获取事件,2 截取屏幕和压缩,3 控制信息及数据的发送。客户端分成2 个 模块,1 接l | 雯控隶l 痞惠秘数据,2 簿压缭帮显示袋图文 孛。下西洋缡定义了每 个模块骚完成的功能。 爨务端漾 譬分或戬下3 个攒头: 1 、事件驱动模块 耄予截取秘处理鬣标亵键擞瀵惫静方式基零耱弱,不失一般瞧,本文哭 叙述截取和处理鼠标事件的过稷。 该模块的主要凌黢是获褥甄标载事穆激威,著显壤据激聚豹不嚣类鍪, 进行不问的处理。我们在这里关心的事件主要魑两种,一种是鼠标的单击事 譬,另一秸是黥舞瓣移韵事终。区分这涎耪事 譬楚由鬓蘩戆显示撬剿决定鳃。 因为在w i n d o w s 的显示屏幕的时候,鼠标是单独厕在屏幕对应的设备环境中, 嚣不是镪含在屡蒜位圈之中斡。瑟默每次截取群纂傈存貔健图菸不包含鼹蠡 的位置信息,这也为进一步提商性能,减少传输的数据匿提供了条件。对于 鼠标的移动事l 串,只 l l 要实时健递鼠据黪当兹的位置绩惠裁够了,不必健送 整个屏幕,只在发生单击事件时才截取屏幕。这样节省了系统和网络的资源。 其体的功能要求是该模块能够撼获到敷蠢鼠挺的蕈击以及移动的消息,势置 建立个事件标志,供程序使阁。 2 、截取稠匿缩羼幕 该模块的功能是截取服务端当前的屏幕,将屏幕保存为位图文件,然后 调用一个已有懿动态连接库中的函数将位图文传压缩成j p e g 文件,压缭质量 使用的是缺省值7 5 。 3 、控制和数据的发送 由于客户端使用的是同步模式接收数据,所以设计的时候,考虑客户端 随着机器的启动面启动,同对产生一个异步的套接字,接收服务端的邋船, 所以服务端需冀以多播豹形式,向外发送控铡信息,通知客户端新建一个同 步套接字,接收图像数据,区分控制和图像是邋过预先定义控制信息的内容 来实现的,这样在接救端检测一定数鬟的接收数据的内容,来潮断接收数据 的种类。所以该模块的功能是发送事先定义的控制信息和图像以及鼠橼的位 1 0 臻罱滨= l 二程大学 夔士学使论文 _ 鼹信息,至于发送的信息的属性是通过使用不同的目的端口和内容来区分的。 藏务端溺课俘缀成框强麴瑟2 。l 掰示。 强2 。1 鞭务翡渫 孛缓残捱銎 接收端课件主要包搔蕊个模块: 1 、接收控制信息和数据 为了方便越见课件接收端随着系统启动,_ 并且自动隐藏窗口,这样既不 影响学生终端酌操作,又可以随时根撼腋务端豹控制消息,进入屏幕阔步状 态,然聪新建一个异步的套接字,接收控制信息,当异步套接字收到控制信 怠的时候,设立一个标恚,客户端定时检查该标志,如果收到控制信怠,烫| j 建立个同步的套接字,开始接收数据,由于数据主簧由图像数据和鼠标的 位置组成,所以需要设定相应酌逻辑进行区分。 2 、解压缩和显示位图 将接收到的j p e g 文 串释撬缩减经霭文 孛的函数与疆缩文释来鲁棚同的 动态连接库。将位图文件显示柱屏幕上是通过位图对象来实现的。 接较端谋件蕴藏框图蠡强2 2 掰示 2 。3 本章奎结 霭2 。2 接牧璃谦伟缝戏框闺 在本章中主要从软件工程的角度,详细分析和定义了软件的需求,各个 软俘模浃技术上的可行性,并辩凡耱胃萼亍豹方案遴辛亍辩魄。在谍释豹辍务灞 创新的弓i 入事件驱动机制和多播。然后根据需求对软件的功能和结构进行了 怒努。 跨尔滨工程大学磊囊学寝论文 第3 章事件驱动 3 1 事件驱动的引入 在褥壤溺教学孛老簿篌蔼泌有的c a i 漂释漭解p o w e r p o i n t 秘演示程序 ( 如v c ) 如何使用的时候,由于老师经常需要对一些概念或者重要的地方进行 讲解,掰蔽撮多嚣寝霹幕并未发生交优。这裁迁入怒至l ,鲡采在羼幕未发生 变化的时候,并不传送数据,这样不仅减少了对教师端的资源f j 勺占用,而且 迄减少了鼹网终瓷源鹣占焉。 通常引起计算机屏幕变化的因素较多,可能是教师输入信息引起的,也 露藐是稷廖运行引起豹,毽在c a i 教学中我弱关心豹摄纂交毒乏主要卤教鉴蓼兹 输入信息引起的,也就是教师通过鼠标和键盘输入的信息。通常情况下教师 浚入瓣酝稼帮键盘游意凝囊演示的程黟改变当囊莓夔屏纂强像。懿暴我们称藏 标和键擞的输入称为事件。那么我们就称事件的发生导致服务端截取屏幕并 送行处疆为事终驱动。实际上攀 孛驱凌媳愚想主要是氆鉴了w i n d o w s 瓣王非 方式。w i n d o w s 就是典挺的事件驱动的系统。它的特点是不由攀件的顺序来 控制,惩是由攀传斡发生寒控铡,爨鸯敕事 孛怒无彦懿,系统蹩根据事终发 生来调用相应的处理模块。 课传鼹务避能够擐据羧入消意进露实时鲍圈像截取秘处建是以操 乍系统 的分时机制和消息传递机制为赫础的。 3 2 基蚕毒一谨i n d o w s 操作系统鑫奄分时操作 w i n d o w s 并不是囊歪豹多馁务搡俘系统,瓷藏是说c p u 在一个孵剡不憩 同时执行两个不同的任务,那表面上看上去时同时运行的进程是怎么实现的 暖? 首先看一下什么是进程,进程通常被定义为一个难在运行的程序的实例, 它由鼹令部分缌成:一个是操馋系统t e | | 采管理进程的肉核对象,内核j l 圣象也 是系统用来存放关于进程的统计信息的地方。塌一个魑地址空间,它龟含所 飧尔浜王程丈掌壤士学位论文 有可执行模块或d l l 模块的代码和数据,它还包含动态分配的内存空间,如 线程攀棱帮雄分靛空溺。逶程怒不活泼豹。菪鬣使遴稷完成菜獭搽 乍,它必 颂拥有一个在它的环境中运行的线程,该线程负责执行包含在i 挂程的地址空 阕中静挺鹃。实际上,攀枣遘獠可能惫翕若予个线程,掰有这黧线程郝“弱 时”执行进程地址空间中的代码。为此,每个线程都有它自己的一组cpu 寄存器秘它塞纛熬堆栈。每个遴程至少穰舂一个线程,寒砉l f 行遴程静逡继空 间中的代码。如果没有线程来执行进程的地址空间中的代码,那么进程就没 有存莛豹璎峦了,系统魏将垂动滋澄该逡程窥它翡缝毯囊翅。 实际上操作系统把c p u 的工作时间按照一定大小,如2 0 m s 分成很多的时 阗冀,然磊提摇要求运行的送穗黪佳走缀戈每一个进程分配豺瓣片,魏鬻3 。l 所示。那些优先级比较低的进穰和被阻塞的进程将被挫起,直到有它们的消 惑至l 达。诖鄂些饯先级矮毫的避程鲶滚获褥资源褥以逡牙,虽然这些程序著 不是真的同时运行,但由于轮流执行的程序等特的时间很短,所以在人们看 来,这娥遴程仍然是囿瓣运行懿。服务漩瀑 牛之疆以戆够圊步藏取当懿的屡 幕就是因为这个原理。 图3 1c p u 为线程轮流分配时间片 我们经豢羲裂菜望程序在麓辩运行戆露候蠢法噙庭我餐赘撵佟,邋是因 为w i n d o w s 是一种非剥夺式多任务操作系统,只有的应用程序交出c p u 控制 寝后,w i n d o w s 才蕤爨控摹l 较交绘其毽疫爰程廖。当擞终系绞在一个黪阕片 内将控制权交给程序之后,程序在执行之后,豳于计算盛大不熊及时完成任 哈尔滨工程人学硕士学位论文 务或者等待数据的输入,而没有交出控制权,那么其它的程序就无法得到运 行的资源被挂起。w i n d o w s 只有在需要的时候才会中断那些笨重的程序,所 以在演示比较大的应用程序如m a t l a b 的时候,其它的程序,包括我们的服务 端课件可能就无法运行,直到m a t l a b 启动完毕之后,将系统的控制权交给其 它的应用程序。 3 3 操作系统的消息传递机制 w i n d o w s 的一个主要目标是为程序的运行提供一个强壮的环境。为实现 这个目标,要保证每个线程运行在一个环境中,在这个环境中每个线程都相 信自己是唯一运行的线程。更确切地说,每个线程必须有完全不受其他线程 影响的消息队列。而且,每个线程必须有一个模拟环境,使线程可以维持它 自己的键盘焦点( k e y b o a r df o c u s ) 、窗口激活、鼠标捕获等概念。当一个线 程第一次被建立时,系统假定线程不会被用于任何与用户相关的任务。这样 可以减少线程对系统资源的要求。但是,一旦这个线程调用一个与图形用户 界面有关的函数( 例如检查它的消息队列或建立一个窗口) ,系统就会为该线 程分配一些另外的资源,以便它能够执行与用户界面有关的任务。特别是, 系统分配一个t h r e a d i n f o 结构,并将这个数据结构与线程联系起来。 这个t h r e a d i n f o 结构包含一组成员变量,利用这组成员,线程可以认为 它是在自己独占的环境中运行。t h r e a d i n f o 是一个内部的、未公开的数据结 构,用来指定线程的登记消息队列( p o s t e d m e s s a g eq u e u e ) 、发送消息队列 ( s e n d m e s s a g eq u e u e ) 、应答消息队列( r e p l y m e s s a g eq u e u e ) 、虚拟输入 队列( v i r t u a l i z e d i n p u tq u e u e ) 、唤醒标志( w a k ef l a g ) 、以及用来描述线 程局部输入状态的若干变量。线程有了与之相联系的t h r e a d i n f o 结构时,线 程就有了自己的消息队列集合。 如果一个进程建立了三个线程,并且所有这些线程都调用 c r e a t e w i n d o w ,则将有三个消息队列集合。消息被放置在线程的登记消息队 列中,这要通过调用p o s t m e s s a g e 函数米完成:当一个线程调用这个函数时, 系统要确定是哪一个线程建立了用h w n d 参数标识的窗口。然后系统分配一块 内存,将这个消息参数存储在这块内存中,并将这块内存增加到相应线程的 1 4 晗年滨王程大学硕士学经论文 登记消息队列中。并且,这个函数还设置q s p o s t m e s s a g e 唤醒位。函数 p o s t m e s s a g e 程登记了溺惠之菇立即返强,调溺该函数虢线程不知道登记豹 消息是否被指定窗口的衡口过程所处理。 可黻这么认为,当搡俸系统接救篝藏标和键盘熬输入渚悫静时候,系统 会根据鼠标的仪嚣,或者当前窗口的焦点情况,判断应浚将输入消息发给哪 个程彦的线程,氇藏是将漓惑缀送翻线程静清惑获翔孛,然磊在线程豹瓣闻 片内,线程会调用g e t m e s s a g e 或p e e k m e s s a g e 函数来查询消息队列中是否有 簿特蹩爨戆溃瑟”。 正鼹因为存在线程的消息对列这种机制,我们彳。能通过使用钩子函数, 在演示稷痔楚趱鬣稼帮键盘渚惑煞跨缓,能够救婺事 孛发生赘逶翘,遴行程 应的处理。 3 4 钩子函数 整予教羹雾濒涤薛遴常不是籍景程渗,掰浚蠢法获缮辕天焦纛,焉搽终系 统只会把鼠标和键盘的消息发给当前的应用程序,要想截取系统发送给应用 翟彦熬鬣标秘键盘豹溪惫,赣瑟矮篌瓣全是豹锪予壅数。 钩予机制允许应用程序截获处理w i n d o w s 消息或特定事件。与d o s 中断 截获处理凝到蠢类纭之缝。钩子( h o o k ) ,是w i n d o w s 瀵感楚莲爨露l 豹一令平 台,应用程序可以在上丽进行设置回调函数以j 鑫视指定窗口的菜种消息,而 且爨蓥筏熬塞蹬可以楚其毽进摆瘊截邃瓣。当淤感到达蓐,奁瓣拣密嗣处理 函数之前处理宅。每一个h o o k 都有一个与之相关联的指针列表,称之为钩子 链表,该链表中熬 塞镑指自这令钩子黪各个处溪函数。一个锈予处理一穗类 型的消息。当钩子所监视的消息出现时,w i n d o w s 调用链表中的第一个钩子 处理函数。菜堡类型黪钩子只熬在系统范匿内设置处璜涵数,獒余类型的钩 子还可以在特定的线程中设置。对于某一特定类型的钩子( 它处理某一类型的 瀵息) ,线程钩予被先调建,接黪是系绞镑子予程序。钩子子程廖是一个应用 程序定义的回调函数( c a l l b a c kf u n c t i o n ) ,不能定义成某个类的成员函数, 只能定义为普邋靛e 函数。由予我们要拦截系统发绘要演示的皮用程膨的鼠 标和键盘消息,所以必须要安装全局的钩子函数。要实现全局的钩子瀚数, 哈尔滨工程大学硕士学位论文 就必须将钩子的回调函数映射到所有进程的空间,而且要把钩子的回调函数 放在动态连接库中。 3 5 动态连接库 动态连接库( d l l ,d y n a m i c l i n kl i b r a r y ) 也是一种可执行文件,只不过 它不能象普通的e x e 文件那样可以直接运行,而是用来为其它可执行文件( 包 括e x e 文件和其它d l l ) 提供共享函数库。使用d l l 的应用程序可以调用d l l 中的导出函数( e x p o r t e df u n c t i o n ) ,不过在应用程序本身的执行代码中并不 包含这些函数的执行代码,导出函数经过编译和连接之后,独立的保存在d l l 中。使用d l l 的应用程序只包括了用于从d l l 中定位所引用的函数的信息, 而没有函数具体实现,要等到程序运行时才从d l l 中获得函数的实现代码。 显然,使用了d l l 的应用程序在运行时必须要有相应的d l l 的支持。d l l 在 w i n d o w s 编程中得到了广泛的应用。w i n d o w s 应用程序的基础:w i n d o w sa p i 函数中的相当部分就是由一组d l l 所提供的,这些d l l 从安装w i n d o w s 起就 存在于系统中了。 3 6 具体实现 如果要使用拦截系统发给演示应用程序的鼠标消息,就必须安装全局的 钩子函数,而且要把钩子的回调函数放在动态连接库中。由于动态连接库是 一个独立的程序,所以放在一个独立的工程中来实现。 具体实现的过程如下,首先通过v c 的a p p w i z a r d 建立一个w i n 3 2 动态连 接库,名字设为h o o km o u s e d l l 。因为在主程序中需要得到动态连接库中的 变量和函数的地址,以便在设置钩子的时候使用,所以在后面的选项中,选 择动态连接库的类型为ad l lt h a te x p o r t ss o m es y m b o l s 。然后在工程文 件中删除作为示例的输出类的代码,再在头文件中定义一个指向钩子句柄的 导出变量和导出函数,定义导出变量是因为,在钩子对相应的消息处理之后, 还要利用函数c a l l n e x t h o o k e x 将消息传递给消息链中的下一个函数,否则, 其他的应用程序无法收到系统发给他的消息,也就无法进行正常的处理,无 法正确响应用户的输入。接着在c p p 文件中对输出变量进行初始化,然后定 1 6 哈尔滨工程大学硕士学位论文 义钩子的处理函数。因为要截取的是鼠标的消息,所以钩子函数叫 m y m o u s e p r o c ,在函数的定义中,首先对系统传过来的参数n c o d e 进行判别, 如果小于零,则调用函数c a l l n e x t h o o k e x 将消息传递给消息链中的下一个处 理函数。否则,分析参数w p a r a m ,如果等于_ l v ml b u t t o n d o w n 或者 w mr b u t t o n d o w n ,表示此时鼠标单击。因为要截取全局的鼠标单击消息,所 以动态连接库要被映射到每个程序的地址空间。如果演示程序中的钩子函数 得到鼠标单击的消息,就会向服务端程序传递消息,通知服务端程序事件发 生。然后服务端在自己的时间片内由其窗口处理过程响应来自操作系统或者 其他程序的消息。 从动态连接库到服务端传送消息有两种方式:发送( s e n d ) 或者寄送 ( p o s t ) 。这两种方式之间的主要差别在于被寄送的消息不必立即处理。被 寄送的消息放置于一个先入先出的队列里等待应用程序空闲的时候处理,而 被发送的消息需要立即处理。实际上,发送消息到窗口处理过程和直接调用 窗口处理过程两者之间几乎没有任何不同。只是可以要求操作系统截获所有 为达到某个目的而在应用程序中被发送的消息,但不能截获对窗口处理过程 的直接调用。 与用户输入相对应的消息( 如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【行业】冷链物流企业数字化转型策略
- 产后抑郁的人际关系治疗应用
- 冬季防溺水安全教育方案范文(23篇)
- 交叉设计在生物等效性试验中的窄治疗指数药物应用
- 博朗阁施工组织设计
- 主动脉窦瘤破裂的急诊手术处理
- 希尔顿酒店成本管理研究论文设计
- GAMP5的基本概念和内容
- 博士论文评语范本
- 大学硕士学位论文评议书
- 项目经理安全管理培训课件
- 2025年社区网格员招录考试真题库完整参考答案
- 全民反恐共创平安课件
- 土料填筑单元工程施工质量验收表填写示例(表1.10 )
- 2025至2030年中国功能糖行业市场调研及未来发展趋势预测报告
- 医疗病例信息记录模板病历摘要生成版
- 2025年北京住院医师规范化培训考试(外科)历年参考题库含答案详解(5卷)
- 病案科人员配置标准
- 大学生职业规划大赛生涯发展展示
- (高清版)DB11∕T 2440-2025 学校食堂病媒生物防制规范
- 学堂在线 研究生学术与职业素养讲座 章节测试答案
评论
0/150
提交评论