一种PPT共享方法及实现该方法的教师端和学生端与流程

文档序号:11950595阅读:2841来源:国知局
一种PPT共享方法及实现该方法的教师端和学生端与流程

本发明属于教育信息化技术领域,具体涉及一种PPT共享方法及实现该方法的教师端和学生端。



背景技术:

教育信息化的发展依托于教学平台和教学方式的发展,教学平台为老师和学生们提供线上授课和学习的环境,为处于不同地方的老师和学生在同一个网络课堂上学习,使得异地教学成为了可能。教学方式则是通过信息化技术,克服地理位置上的隔离,能给师生们带来互动的教学体验。除了在教学过程中教师音频的传输以外,教学过程中的多媒体教学课件如何高效地在网络中同步传输播放也是一个重要的问题。

现在大多数的网络PPT教学,采用比较多的一种方式是学生们自主观看PPT,即学生上课前提前将老师的PPT下载到本地,上课时自主浏览,这样造成了学生有时跟不上老师的进度从而保证教学质量。采用比较多的另一种方式是录屏方式,即在教师授课时,对教师当前的操作屏幕进行录制,采用视频的方式传输给学生端,虽然这种方式解决了教师和学生间实时性的问题,但是由于是实时视频,存在无法对视频进行查看操作,即学生无法将课件进行快进或后退浏览。



技术实现要素:

针对现有技术的以上缺陷或改进需求,本发明提供了一种PPT共享方法,其目的在于,学生上课前无需提前将老师的PPT下载到本地,授课过程中既能保证教师端播放与学生端读取的同步性,又能实现学生端自主浏览课件,使教师和学生之间拥有更好的教学交互体验。

一种PPT共享方法,其特征在于,包括PPT远程同步播放和PPT本地 自主浏览两部分;

所述PPT远程同步播放的具体实现过程为:

(S1)教师端预先将PPT课件分为多个文件块;

(S2)教师端调用本地播放器播放文件块,播放的同时捕获并封装操作指令,将当前播放的文件块和封装后的操作指令主动推送给学生端;

(S3)学生端缓存收到的文件块,解析操作指令,调用本地播放器播放当前缓存的数据块和响应操作指令;

所述PPT本地自主浏览步骤的具体实现过程为:

(T1)请求学生端预先建立本地虚拟磁盘,将教师端的文件块目录映射到本地虚拟磁盘;

(T2)请求学生端截取用户在本地虚拟磁盘访问预浏览文件块目录的操作,根据截取的访问操作计算预浏览文件块信息,查询预浏览文件块是否已在学生端本地缓存,若预浏览文件块已载入学生端本地缓存,则直接调用本地播放器播放预浏览文件,否则进入步骤(T3);

(T3)请求学生端生成包含预浏览文件块信息的访问请求指令发送给教师端;

(T4)教师端解析访问请求指令获得预浏览文件块信息,查询是否已有学生端缓存该预浏览文件块,若查询到,则将该学生端信息反馈给请求学生端,若没有查询到,则将请求的预浏览文件块直接发送给请求学生端;

(T5)请求学生端向教师端反馈的学生端发出访问请求,被请求访问的学生端将缓存的预浏览文件块传送给请求学生端,学生端缓存预浏览文件块并调用本地播放器播放预浏览文件块。

进一步地,在所述PPT远程同步播放的具体实现过程中,学生端与教师端构成树状拓扑网络,以教师端作为根节点,教师端主动推送的文件块按照树状网络拓扑结构由根节点向叶子节点层层传输分发。

进一步地,所述文件块采用流式传输,所述操作指令采用XML格式封 装。

进一步地,所述教师端存有文件块检索信息表,用于记录文件块ID和缓存有该文件块的学生端位置信息;所述文件块ID由PPT课件文件名和文件块检索号构成;所述教师端在将文件块发送给学生端的同时,更新文件数据块检索信息表;所述学生端从本地缓存删除文件块的同时,告知教师端更新文件块检索信息表。

进一步地,所述步骤(T4)若查询到已有学生端缓存该预浏览文件块,则从查询到的学生端中选取离请求学生端最近者反馈给请求学生端。

一种实现PPT共享的教师端,包括教师端文件应用模块、教师端文件透明操作模块、教师端文件共享传输模块;

所述教师端文件应用模块,用于调用本地播放器播放,播放的同时捕获并封装操作指令;

所述教师端文件透明操作模块,用于将当前播放的文件块和封装后的操作指令推送给学生端;还用于调用教师端文件共享传输模块以响应学生端的访问请求;

所述教师端文件共享传输模块包括:

教师端网络拓扑信息管理子模块,用于负责管理网络拓扑结构;

教师端协作通信子模块,用于教师端与学生端之间的通信;

教师端文件分块处理子模块,用于预先将PPT课件分为多个文件块;

教师端文件块管理子模块,用于解析访问请求指令获得预浏览文件块信息,查询是否已有学生端缓存预浏览文件块,若查询到,则将该学生端信息反馈给请求学生端,若没有查询到,则将请求的预浏览文件块直接发送给请求学生端。

进一步地,所述教师端文件块管理子模块存有文件块检索信息表,用于记录文件块ID和缓存有该文件块的学生端位置信息;所述文件块ID由 PPT课件文件名和文件块检索号构成;所述教师端在将文件块发送给学生端的同时,更新文件数据块检索信息表;所述学生端从本地缓存删除文件块的同时,告知教师端更新文件块检索信息表。

进一步地,所述教师端文件块管理子模块查询到已有学生端缓存该预浏览文件块,则从查询到的学生端中选取离请求学生端最近者反馈给请求学生端。

一种实现PPT共享的学生端,PPT课件分为多个文件块,包括学生端文件应用模块、学生端文件透明操作模块和学生端文件共享及缓存模块;

所述学生端文件应用模块,用于调用本地播放器播放PPT文件块以及响应教师端的PPT操作;

所述学生端文件透明操作模块,用于将教师端主动推送的文件块提供给学生端文件应用模块同步播放,解析教师端推送的文件块操作指令并提供给学生端文件应用模块同步响应操作指令;还用于预先建立本地虚拟磁盘,将教师端的文件块目录映射到本地虚拟磁盘;截取用户在本地虚拟磁盘访问预浏览文件块目录的操作,调用学生端文件共享及缓存模块以获取预浏览文件块,提供所述学生端文件应用模块播放;

所述学生端文件共享及缓存模块包括

学生端文件块请求访问子模块,用于根据预浏览文件块目录的访问操作计算预浏览文件块信息,查询预浏览文件块是否已在学生端本地缓存,若是,则将该文件块反馈给上层透明操作模块,若不存在,则生成包含预浏览文件块的访问请求指令传送给教师端;

学生端文件块缓存管理子模块,用于缓存教师端主动推送的PPT文件块和学生端请求的文件块;

学生端文件块转发子模块,用于从本地缓存中的文件块转发给其他学生端;

学生端协作通信子模块,用于与教师端以及其他学生端之间的通 信。

进一步地,所述学生端与教师端构成树状拓扑网络,以教师端作为根节点,教师端主动推送的文件块按照树状网络拓扑结构由根节点向叶子节点层层传输分发。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,本发明可实现在线授课过程中教师在本地控制播放自己的多媒体课件,学生端实时地远程读取文件数据并同步播放课件。学生端应用程序不通过提前下载的方式获取文件,而是在授课过程中透明地访问远程教师端分享出来的文件数据。在该模型中,教师端服务器是文件数据原始提供者,并向节点提供文件数据块检索和维护整个拓扑网络。学生端从网络中获得文件数据并提供给用户应用程序使用,同时在本地缓存数据,用于向其他节点转发。

附图说明

图1为本发明系统整体架构示意图;

图2为本发明文件分块示意图;

图3为本发明学生端对操作指令参数的XML信息解析流程图;

图4为本发明教师端与学生端文件目录映射关系示意图;

图5为本发明虚拟磁盘驱动原理示意;

图6为本发明教师端结构图;

图7(a)为学生端节点加入消息示意图,图7(b)为学生端节点退出消息示意图;

图8为本发明B树数据结构图;

图9为本发明文件数据块申请读取的消息格式示意图;

图10为本发明学生端结构图;

图11为本发明文件存储的哈希表存储结构图;

图12为本发明文件数据块封装格式示意图;

图13为本发明后继节点信息表示意图;

图14为本发明更新节点信息表的消息格式;

图15是本发明节点协作通信模块工作流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

图1为本发明系统整体架构示意图,涉及一个教师端和多个学生端,本发明PPT共享方法包括教师端播放的PPT在学生端同步播放机制和学生端PPT本地自主浏览两部分内容。下面对两部分内容详细说明。

一、PPT远程同步播放机制

本发明PPT同步播放机制是指:学生不需要在上课前提前下载PPT,老师在远程授课播放PPT以及对PPT进行操作(包括翻页、重难点的注释、动画效果的播放等等),学生端边读取边播放,老师的操作在学生端也会同时呈现,即老师播放的PPT和学生观看的PPT实时同步。

本发明PPT同步播放方法流程图,具体为:

(1)教师端将课件资源分成多个文件块。

课件资源按照文件块的方式进行组织和管理,譬如PPT,可将一张PPT页面作为一个文件块,每一个文件块独立存储。在整个资源共享网络中,每个文件块由课件文件名和文件块检索号来唯一确定。课件文件名顾名思义,是表示课件文件名的字符串,而文件块检索号则表示文件块在课件文件中顺序。每个课件都被系统按照预定FS_CHUNK_SIZE的固定大小进行了分割,文件块检索号则表示该文件块在整个课件文件中所处的位置,文件块依次被系统分配其文件块检索号。如图2所示,课件文件被分为4个 文件块,可能由于最后一个文件块内容小于FS_CHUNK_SIZE的大小,此时需要额外信息来说明具体文件片大小。

因此,在整个文件共享网络中,每个文件数据块与文件的名称和文件块检索号所一一对应。而课件文件名和文件块检索号一起作为文件块的唯一标识,称为课件文件块ID。在课件文件共享系统中,每个子节点都通过该课件文件块ID来进行检索具体的文件块。

(2)教师端调用本地播放器播放文件块,播放的同时捕获并封装操作指令,将当前播放的文件块和封装后的操作指令推送给学生端。

教师端和学生端连接建立传输通道。当教师对ppt进行操作时,教师端将操作指令及相应参数封装成XML进行传输,将ppt页面采用流式传输的方式进行推送。

文件在同步播放时,实时同步播放的操作指对应的参数可能会因为播放的文件格式不同而有所不同。为了使得系统能兼容不同的文件同步交互控制参数,这里优选采用可视化文本格式,即XML(Extensible Markup Language)进行文件控制消息的封装。操作命令消息采用星型架构进行直接连接控制。XML是基于文本的消息格式,通过添加额外的字段使消息易于读取,在可读性和传输效率上做的一种折中,而且XML的解析已经有很成熟的解决方案。最终基于XML来设计系统同步的消息格式。

这里以PowerPoint作为一个例子来描述消息的格式。

<?xml version="1.0"?>

<pptmsg>

<type>PowerPoint<类型>

<filename>123.pptx</文件名>

<slidecnt>11</slidecnt>

<slide>3</滑动>

<click>2</点击>

<messageindex>1</messageindex>

</pptmsg>

(3)学生端缓存收到的文件块,并解析操作指令,调用本地播放器播放当前缓存的数据块和响应操作指令。

学生端采用缓存的方式对ppt页面进行存储,接收到的文件块缓存在系统的内存中。

请参见图3,学生端对接收到的操作指令参数的XML信息进行解析,包含ppt的当前页面数、ppt的当前操作指令(参数)等等,将这些参数发送到本地的播放器,本地的播放器根据参数对本地的ppt进行同步操作。

二、学生端自主浏览

本地学生端可根据个人需要灵活地对已收到的课件资源进行灵活的播放和操作,实现自主浏览。

对已经接收到的页面,由于ppt文件该部分已经缓存在本地,对这些页面的查看可直接翻页查看即可。

对未授课的页面,本地学生端还可根据个人需要灵活地对未缓存的课件资源进行灵活的透明访问,也就是说学生端可以完全透明地像读取本地磁盘上的文件一样去访问读取远程教师端的文件数据。按照前文所述的被动推送模式,学生端向教师端发送请求,请求的信息的中包括所需的页面数,教师端收到请求后,根据请求,发送相应的页面到学生端。

具体的实现过程为:

(1)请求学生端预先建立本地虚拟磁盘,将教师端的文件块目录映射到本地虚拟磁盘。

虚拟磁盘是一个用户态的文件系统。通过调用外接接口函数将远程服务端指定的目录映射到本地虚拟磁盘内。图4为本发明教师端与学生端文件目录映射关系示意图。虚拟磁盘内的文件目录实则是对远程服务端目录的映射,用户应用程序对虚拟磁盘内文件的每一次访问实则是对远程服务 端目录的访问。虚拟磁盘并不是一个真实的磁盘,存在于内存。虚拟磁盘将远程教师端的文件目录映射到本地。在实际的应用中,我们的虚拟磁盘文件系统提供列取文件目录内容,获取文件信息。用户应用程序像读取本地磁盘文件一样。

(2)请求学生端截取用户在本地虚拟磁盘访问预浏览文件块目录的操作,根据截取的访问操作计算预浏览文件块信息,查询预浏览文件块是否已在学生端本地缓存,若预浏览文件块已载入学生端本地缓存,则直接调用本地播放器播放预浏览文件,否则进入步骤(3)。

(3)请求学生端生成包含预浏览文件块信息的访问请求指令并发送给教师端。

(4)教师端解析访问请求指令获得预浏览文件块信息,查询是否已有学生端缓存该预浏览文件块,若查询到,则将该学生端信息反馈给请求学生端,若没有查询到,则将请求的预浏览文件块直接发送给请求学生端。

本发明请求策略是:除了向教师端索要页面外,还可以向临近的已经缓存有所需数据块的学生端获取该部分课件内容。教师端对资源请求进行解析,查询已经缓存有该资源的节点,若查询到,则将该节点的位置信息推荐给请求学生端,学生端立即向推荐学生端请求访问PPT数据块;若没有查询到,则直接将请求的PPT数据块发送给学生端。

学生端在本地注册dokan.sys驱动程序,实现了一种基于用户态的文件系统。dokan库以Windows系统驱动的方式Windows系统中进行注册以后。学生端的用户应用程序对虚拟磁盘内目录进行读文件,查询文件目录(ReadFile,WriteFile,GetFileInformation)等操作时,这些操作请求会被送到Windows内核驱动运行。然后这些指令被继续送往dokan的内核态文件驱动中。Dokan收到指令请求以后调用响应文件操作函数,即对远程服务端的文件的访问操作,文件操作的回调函数将函数的结果发送回提出请求的用户应用程序中,如图5所示。

(5)请求学生端向教师端反馈的学生端发出访问请求,被请求访问的学生端将缓存的预浏览文件块传送给请求学生端,学生端缓存预浏览文件块并调用本地播放器播放预浏览文件块。

通过上述说明可知,本发明涉及的资源推送分为主动推送和被动推送,主动推送模式下:教师对ppt进行操作,系统主动将操作指令及ppt页面进行推送;被动推送模式下,学生希望往后翻页查看时,向教师端进行所需页面请求,教师端根据需要进行推送,被动推送在后续的自主浏览中使用。

图6为本发明教师端的一种实施方式,包括文件应用模块、文件透明操作模块、文件共享传输模块;文件共享传输模块又包括:网络拓扑信息管理子模块、文件分块处理子模块、文件块管理子模块和协作通信子模块。

(1)教师端文件应用模块

调用播放器播放和操作PPT,捕获并封装操作指令。

(2)教师端文件透明操作模块

文件透明操作模块将当前播放的文件块和封装后的操作指令推送给学生端;

文件透明操作模块还响应学生端的资源请求,调用文件块管理子模块解析资源请求,查询哪些学生端已经缓存有请求资源,从中选取离请求节点最近的节点推荐给请求节点。最近的节点可能是学生端,也可能是教师端。

(3)教师端网络拓扑信息管理子模块

网络拓扑信息管理子模块负责管理网络拓扑结构。网络中的所有节点构成树状拓扑结构,所述节点包括学生端和教师端,PPT文件块按照网络的拓扑结构由根节点向叶子节点层层传输分发。

如果新的学生端节点加入网络拓扑结构中,节点会向教师端节点发起请求,教师端节点收到请求后,将该学生端节点加入到树状网络拓扑结构中。当有学生端节点申请退出在线课堂,从网络中将该节点去掉,然后重 新建立新的网络拓扑结构。每当因为学生节点的加入或者离开在线课堂,网络拓扑信息管理子模块都会通知受到影响的节点其新的后继节点信息。

按照一种具体实施方式,文件共享网络拓扑信息表的数据结构采用一种自平衡的多路搜索树,该数据结构采用B树的数据结构来实现,如图7所示。B树的定义以及基本操作属于现有技术,本文不在阐述。

B树种每个节点包含多项,例如网络中的根节点就包含0001和0002两项,这里每一项表示课件转发网络中的一个学生端节点。B树种每个节点都包含一个关键字,每个节点的关键字就是节点的IP地址。B树通过这个关键字对每个节点进行排序,这样可以使得IP地址较为接近的节点能分布在相近的网络拓扑区域。

在B树构成的课件共享转发网络中,每一个节点都负责对后继的若干节点进行课件资源转发。这种对应的转发关系是通过如下的机制来实现的。在B树的结构中,包含n项的节点后面对应n+1个子节点。例如图3-9中B树第二层左1子节点包含有0003和0004两项,该子节点后续有3个后继子节点。则该子节点0003项负责左1子节点中的项,0004负责对应左2子节点中的项,第n项对应n和n+1子节点中的项。如图所示,该子节点0003对应的后继节点为0010,0011和0012三项.而0004所对应后继节点是左2和和左3子节点中的项,其为0013,0014,0015,0016。

当有新的学生在授课过程中加入在线课堂,则该学生端节点会加入课件共享传输网络中,该学生节点会向教师端节点发送节点的加入或者离开消息,课件共享转发网络则会在网络拓扑信息表里面相应地增删对应的节点项。

学生端节点的加入消息如图8(a)所示,学生端节点的退出消息如图8(b)所示。

学生节点如果加入或者离开拓扑网络,则网络拓扑信息表通过B树的插入或者删除的方式来增加或者删除该学生节点。这里不再阐述B树的插 入和删除子节点的实现细节。同时,当因为有学生节点的加入和离开课件共享转发网络,对网络的拓扑信息表发生变化,使得有些学生节点的后续节点列表发生改变。这时B树的根节点(即教师端节点)会向涉及到变化的节点发送最新的其后继节点信息列表。

(5)教师端文件分块处理子模块

文件分块处理子模块用于将PPT分为多个数据块,一般一页PPT为一个数据块。每个文件数据块与文件的名称和文件块检索号一一对应。而文件名和文件块检索号一起作为文件块的唯一标识,称为课件文件块ID。在课件文件共享系统中,每个子节点都通过该课件文件块ID来进行检索具体的文件块。

(6)教师端文件块管理子模块

文件块管理子模块作为响应资源请求的具体执行者。当有学生端需要访问某课件文件块时,向教师端发出请求;教师端作为文件检索服务器来记载文件数据块被缓存在网络中的节点位置,服务器返回文件块的存储位置,请求节点即可从存有该资源的节点处获取到文件块。如果没有节点存储该文件,则学生端直接从教师端获取文件块。

文件块管理子模块存储有文件数据块检索信息表,记载文件数据块资源和缓存有该课件文件块资源的学生节点位置信息。文件数据块资源由文件数据块ID来标识,学生节点的位置信息则由IP地址和端口号来标识。文件数据块检索目录采用哈希表的方式来实现,哈希表的键是文件数据块ID,所映射的值为缓存有该文件数据块的节点位置。采用哈希表的实现方式是因为在整个教学文件共享系统中,课件文件块的数量可能很大。在实际教学中,为了保证课堂教学的实时性,对于课件文件块的查询反应

文件块管理子模块收到学生端发出资源访问请求后,对请求进行解析。图9为文件数据块申请读取的消息格式示例,其中File_index指文件数据块检索号。

若该课件文件数据块所对应的表项存在,则从该文件数据块对应的存储节点列表中选取一个最近的节点,将节点的IP地址和端口号信息发送给发起查询请求的学生节点。当该学生节点从提供的节点中成功获取到课件文件数据块资源后,学生节点会将该文件数据块就放入本地的文件数据块缓存中,同时发送该文件数据块已被节点缓存的消息给教师端。教师端根据收到的消息更新其文件数据块检索目录。

若检索目录中不存在存有该文件数据块的学生节点,则学生节点从服务中心本地节点读取课件文件数据块。并且在学生节点成功读取后,在本地进行缓存,通知教师端节点已添加该课件文件数据块。教师端根据收到的消息更新其文件数据块检索目录。

当某个学生节点的文件数据块缓存已满时,则会按照先进先出的方式将旧的文件数据块删除掉。同时发送该文件数据块已被节点删除的消息给教师端。教师端根据收到的消息更新其文件数据块检索目录,从文件数据块检索目录中删除掉该节点与文件数据块的对应关系。

(7)教师端协作通信子模块

协作通信模块用于教师端节点与学生端节点之间的通信。该模块基于windows socket通信模型,对其基本功能进行进一步的封装,负责教师端节点与网络中各学生端之间的文件数据块传输以及控制信息的发送等。如图3-11所示,该模块在运行时初始化socket,建立监听。当有监听到有新的学生端请求连接教师端。此时协作通信子模块创建一个新线程用于控制信息的交互与文件块数据的传输。当该线程收到消息后,对消息的类型进行解析,若为控制信息,则将消息传递到共享传输模块中的子模块进行处理。若为数据消息,则传递给上层透明操作模块进行处理。

图10为本发明学生端的一种实施方式,包括学生端文件应用模块、学生端文件透明操作模块和学生端文件共享及缓存模块;学生端文件共享及缓存模块又包括学生端文件块请求访问子模块、学生端文件块缓存管理子 模块、学生端文件块转发子模块和学生端协作通信子模块。

(1)学生端文件应用模块

文件应用模块用于用于调用本地播放器播放PPT文件块以及响应教师端的PPT操作。

(2)学生端文件透明操作模块

学生端文件透明操作模块,用于将教师端主动推送的文件块提供给学生端文件应用模块同步播放,解析教师端推送的文件块操作指令并提供给学生端文件应用模块同步响应操作指令。

文件透明操作模块还用于帮助实现学生端自主浏览。文件透明操作模块在本地创建一个虚拟磁盘,将远程服务器上的目录映射到本地的虚拟磁盘上,通过本地磁盘就可以像透明地读取和操作本地目录一样对远程目录和文件进行读取与操作。

学生端节点通过主动请求的方式去获取某一特定文件数据块。此时,学生节点会采用主动获取的方式去获取该文件数据块资源。该学生节点的用户程序将文件名name,访问字节count,偏移量offset发送给文件数据块请求访问子模块。

(3)学生端文件块请求访问子模块

根据预浏览文件块目录的访问操作计算预浏览文件块信息,更具体地说,文件块请求访问子模块根据用户程序提供的文件名name、访问字节count和偏移量offset计算出需要访问的文件数据块。首先,在本地缓存中寻找是否有此文件数据块,若本地缓存存有该文件数据块,则直接将该文件块数据返回给上层透明操作模块。

若本地缓存未存有该文件数据块,可能是因为网络原因,教师端发送文件数据块有延时。则设置一个等待时间,在等待时间中查询文件数据块是否到来。若等待时间过后,请求模块仍没有收到文件数据块,此时文件块请求访问子模块向教师端节点申请访问读取该文件数据块。教师端节点 根据收到的访问请求,通过查询文件数据块检索信息表,找到存有该文件块的节点信息,并返回一个学生节点的位置信息。请求子模块则向该节点发起读取数据申请。若网络中没有其他节点存有该文件块,则教师服务中心节点直接向该学生发送文件块。

文件块请求访问子模块收到发来的文件块后,通过文件缓存模块在本地进行缓存,将文件块的标志位Chunk_Flag置为1,然后将文件块发给透明操作模块,供用户应用程序使用。

(4)学生端的文件缓存管理子模块

文件缓存管理子模块用于缓存收到的PPT数据块。当学生端读取到远程的课件文件块内容后,此时在本地要进行缓存的操作。这里的缓存有两个目的:一、当上课开始后,随着教师讲课的过程中,教师即将授课的部分沿着拓扑结构向学生分发课件内容时,学生端在本地进行缓存。缓存后当讲课中播放到课件内容的位置可以直接在本地通过透明操作模块将课件文件块数据呈现给本地用户应用程序。二、当学生端节点想读取访问某一未缓存特定课件块时,在向远程教师端发出访问请求后,教师端服务器指定网络中缓存有该课件文件快的节点。学生节点向该节点发出读取文件块的请求。当学生节点读取后,在本地进行缓存,供其他学生访问用。

(a)文件缓存结构

文件缓存管理子模块对文件块采用哈希表的方式进行存储管理。用户可以利用哈希函数很快查询到相应课件文件的存储位置。尤其当用户需要频繁的查询文件块,并且缓存区内文件块数量较多时,采用哈希表的方式管理对于提升查找与增删文件块有一定的帮助。图11是文件存储的哈希表存储结构:文件数据块的存储管理方式采用哈希表的方式进行管理,哈希表的键为文件数据块ID,哈希表映射的值为文件数据块缓冲区地址。当学生节点收到文件数据块以后,将文件数据块ID与128取余,根据余数找到对 应的哈希表键。系统解决哈希冲突的方式是采用链地址的方式。哈希表的数据结构如下面代码所示:

其中block_id_high和block_id_low组成文件块ID,Chunk_Flag为1时表示该数据块通过学生主动获取机制获取,chunk_buf指向该文件块的缓存区。

(b)缓存池

文件数据块在系统中缓存在内存中。考虑到在文件播放的过程中对文件数据的查找与增删会比较地频繁。因此这里采用缓存池的方式存储文件数据块,采用先进先出的方式增删文件数据块。字符串指针char*chunk_buf为文件数据块的缓存地址。系统初始化时会在内存中分配128个FS_CHUNK_SIZE大小的内存空间。在缓存池中有两个链表负责管理文件的缓存。一个是缓存链表一个是空闲链表。空闲链表初始化时包含128个空闲内存块,当有文件数据块在本地进行缓存时,系统从空闲链表中取出内存块存入文件数据,然后加入到缓存链表中。

(c)文件块插入和删除

文件块有两种来源,一种是来自资源转发模块,即教师端主动推送,节点从其父节点分发而来的文件块,这类文件块的CHUNK_FLAG标记为0。另一种是来自资源请求模块,即学生端主动向其他节点发起访问请求而 获取的文件块,这类文件块的CHUNK_FLAG标记为1。下面是文件块插入和删除流程:

1.当共享传输模块收到文件数据块后,在本地内存池的缓存链表中查询是否存有该文件块,若有则本地不再进行缓存。

2.查询空闲链表中是否有未被使用的内存块,若有,则直接进入第4步。

3.在缓存链表中采用先进先出的方式,删除掉最旧的一块文件块数据,并将内存块加入到空闲链表中。若该文件块数据的CHUNK_FLAG为1,则向教师端发送文件数据块无效的消息。

4.从空闲链表中取出一个内存块,将文件数据块存入该内存块,再链入缓存链表中。若文件数据块是采用请求访问的方式从远程获得,则将CHUNK_FLAG标识为1。

(d)文件块查找

文件数据块查找分为以下两种方式:一种是当用户应用程序读取文件时,首先在本地缓存链表中查找文件块是否存在于本地缓存中;另一种是收到文件数据块后,在本地缓存链表中查找文件块是否存在,进一步判断是否需要在本地缓存。下面是文件块的查找流程:

1.根据透明操作模块的读文件操作函数的参数(文件名,偏移地址,字节数),计算出系统需要的文件数据块ID。

2.由于缓存管理的表大小为128,将文件数据块ID对128取余,得到其哈希表的键值。

3.根据哈希表的键值,在哈希表中该键值后的链表中进行查找,将文件块ID与链表中的每项分别进行对比,若相同则返回该文件数据块。

若与链表中每一项都不同,则该文件数据块在本地没有缓存。

文件转发子模块在实际应用中,主要有两个作用,一个是用于实现教师主动推送课件机制下父节点将课件块推送到网络拓扑中的子节点,并且子节点接收到数据后继续向下一层进行分发;另一个是根据其他学生节点的 文件数据块读取请求,对所需要的文件数据块进行封装后发送。

(5)文件块转发子模块

1)教师端沿拓扑结构分发

当教师开始上课时,电脑上开始放映课件。教师端的课件分发模块接收到透明操作模块发来的学生读取文件操作。从读取文件命令中获取到相关参数。根据偏移量和字节数计算出具体的文件数据块检索号,将检索号和文件名一起进行计算来算出文件数据块ID。

计算出需要读取的文件数据块ID后,将文件数据块ID进行封装(根据读取的字节数count,文件数据块ID有可能是多个文件数据块ID)。封装的格式如图12所示

对后续学生节点位置信息记载表进行遍历查询,查询出与教师端直连的每个后续学生节点的IP地址信息和端口号。与后继学学生节点建立新的socket通信,向与教师端直连的后续学生节点发送封装好的文件数据块。

2)学生端向其他学生发送方式

当学生端接收到教师端或上一级拓扑网络中学生节点发来的文件数据块后。根据收到的文件数据块的ID,在本地查询收到的文件数据块是否已被缓存。

若缓存区存在该文件数据块ID,则不经过缓存,直接根据查询后续学生节点位置信息表,向每个后续节点发送文件数据块。

这里要注意两个问题:

1.学生节点的不稳定性

由于在在线教学过程中,学生节点可能突然加入或者离开课堂。这时,由于学生节点的离开,对网络拓扑结构中该学生节点的后续子节点接收文件产生了极大的影响,因此我们采用定期心跳包的机制来检测节点的状况。若发现连续三个文件数据包出现丢包的情况,教师端马上动态更新网络拓 扑结构。更换一个学生节点为中继节点,向受到影响的后续子节点转发文件数据块。

2.学生节点的流量控制

若与某个学生节点直连的后续子节点较多,该学生节点的转发流量可能很大,这样该学生节点可能出现网络状况较卡的情况。我们定期检测网络中节点流量情况,若某学生节点流量较大,则通知教师服务中心节点,对该节点的后续子节点进行重新分配,减轻该节点的流量压力。

(f)后续学生节点位置信息表

在课件的转发过程中对后续节点进行发送课件文件数据块时,需要查询后续节点位置信息表来确定后续节点的IP地址和端口号。该后续节点信息表数据结构由链表的方式实现。其数据结构如图13所示:

当网络中出现个别节点脱离拓扑网络的情况时。这时,教师端根据网络拓扑信息管理子模块动态更新网络拓扑结构。此时,教师端节点将向相应受到影响的节点发送新的后继学生节点位置信息表。下教师端更新后续节点位置信息表的消息格式如图14所示。其中node_num表示其后继学生节点的个数,IP和PORT表示与该节点直连的后续学生节点的位置信息。

(6)学生端的协作通信子模块

在文件共享传输模块中,协作通信模块主要负责监听连接,解析处理消息以及教师端与学生端协作通信的功能。控制命令消息采用星型架构进行直接连接控制。

协作通信模块在系统中,作为将文件请求管理子模块,文件转发子模块,文件缓存管理子模块联系在一起的纽带。通信子模块将windows socket进行封装,并进行监听学生端的请求,解析控制消息与进行响应的处理。

如图15所示,在协作通信模块中,运行着一个监听线程,进行完socket初始化以后,当监听到有新的连接请求时,该线程创建一个新线程,建立连接。在该线程中,对消息进行解析和处理。解析通信信息时,对消息中 的Type关键字进行判断,跟据Type关键字的类型进行判断。通信模块根据消息的类型将消息发送到相应的模块内进行处理。

本发明可实现在线授课过程中教师在本地控制播放自己的多媒体课件,学生端实时地远程读取文件数据并同步播放课件。学生端应用程序不通过提前下载的方式获取文件,而是在授课过程中透明地访问远程教师端分享出来的文件数据。在该模型中,教师端服务器是文件数据原始提供者,并向节点提供文件数据块检索和维护整个拓扑网络。学生端从网络中获得文件数据并提供给用户应用程序使用,同时在本地缓存数据,用于向其他节点转发。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1