一种基于远程桌面协议的客户端屏幕更新显示方法与流程

文档序号:11843438阅读:870来源:国知局

本发明涉及一种客户端屏幕更新显示方法,尤其是涉及一种基于远程桌面协议的客户端屏幕更新显示方法。



背景技术:

远程桌面协议是将远程桌面的屏幕更新传送到用户客户端显示。在远程桌面运行过程中会有很多屏幕更新的画面是一样的,比如将某一个窗口最小化后再恢复,将一个窗口从后台切换到前台,这些操作都会使得这些窗口的画面进行重绘,但是画面的内容其实是一样的,或者只是有很小一部分发生了变化,存在大量冗余数据。如果每一次操作之后都要重绘窗口画面,将会传输大量的冗余图像信息数据,会占用带宽,降低网络反应速度。

现有技术采用的方案的缺点是:只缓存整幅的屏幕更新画面,在画面有少量更新时不缓存,因此就造成缓存失效;此外,用户桌面屏幕画面的更新没有和具体应用联系起来,因此当缓存的存储空间已满,需要替换缓存画面时的准确性相对较低,画面重新绘制速度慢,使用户感觉到屏幕画面延迟。



技术实现要素:

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于远程桌面协议的客户端屏幕更新显示方法。

本发明的目的可以通过以下技术方案来实现:

一种基于远程桌面协议的客户端屏幕更新显示方法,该方法包括如下步骤:

(1)监控服务器屏幕画面变化,当服务器屏幕发生变化后执行步骤(2);

(2)将服务器屏幕变化映射到具体的应用窗口,并根据各应用窗口操作判断是否影响缓存更新,若是执行步骤(3),否则执行步骤(4);

(3)判断各影响缓存更新的应用窗口更新区域大小是否超过设定值,若是则对该应用窗口进行服务器缓存和客户端缓存的差异化更新,并在客户端显示服务器屏幕上的屏幕内容,执行步骤(5),否则进行服务器缓存和客户端缓存的合并更新,并在客户端显示服务器屏幕上的屏幕内容,执行步骤(5);

(4)从服务器缓存表中提取服务器屏幕上对应的应用窗口的缓存索引并发送至客户端,,客户端从客户端缓存表中提取与缓存索引对应的图像并在客户端显示,执行步骤(5);

(5)是否结束远程显示,若是则结束,否则返回步骤(1)。

步骤(1)中监控服务器屏幕画面变化具体为:通过镜像显卡驱动对服务器屏幕进行监控,当某一应用提交显卡操作时,镜像显卡驱动获取服务器屏幕画面变化请求。

步骤(2)中将服务器屏幕变化映射到具体应用的窗口具体为查找Windows的对象,从而将屏幕变化映射到具体的应用窗口。

步骤(2)根据应用窗口操作判断是否影响缓存更新具体为:查找存储的应用-窗口属性列表,判断应用窗口的属性为可见窗口或不可见窗口,若为可见窗口则该应用窗口影响缓存更新,若为不可见窗口则该应用窗口不影响缓存更新。

步骤(3)中差异化更新具体为:

以应用窗口的左上角为坐标原点,将整个应用窗口划分为多个大小相同的网格,从服务器缓存表中提取该应用窗口的原缓存画面,将各网格与原缓存画面中对应网格部位进行对比,提取不一致的网格对应的坐标并生成网格更新列表,所述的网格更新列表包括应用窗口对应网格坐标以及对应的画面RGB数据,进而进行服务器缓存和客户端缓存的更新。

步骤(3)中合并更新具体为:获取应用窗口的整体画面RGB数据,进行服务器缓存和客户端缓存的更新。

步骤(4)中服务器缓存表为哈希表,该哈希表包括哈希索引和对应的画面RGB数据,所述的哈希索引即为缓存索引,所述的客户端缓存表为与服务器缓存表相一致的哈希表。

与现有技术相比,本发明具有如下优点:

(1)本发明的客户端屏幕更新显示方法中当服务器屏幕画面变化时查找相应的应用,并将根据应用窗口为可见窗口或不可见窗口来判断屏幕画面变化是否影响缓存更新,若影响缓存更新对服务器缓存和客户端缓存进行更新,否则直接通过缓存索引调用客户端中的缓存进行客户端屏幕的显示,去除数据传输过程中的大量冗余数据,大大减小数据传输量,节省网络带宽、提高网络反应速度,减小用户屏幕画面延迟时间的目的;

(2)本发明判断屏幕更新区域大小,对于更新区域大的应用采用差异化更新,以减少全屏更新带来的网络数据量大和屏幕显示慢的缺点,对应更新区域小的采用合并更新,以减少多次小更新带来的网络数据包过多以及客户端计算资源浪费的缺点。

附图说明

图1为本发明基于远程桌面协议的客户端屏幕更新显示方法的流程框图。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。

实施例

如图1所示,一种基于远程桌面协议的客户端屏幕更新显示方法,该方法包括如下步骤:

步骤1:监控服务器屏幕画面变化,具体地:通过镜像显卡驱动对服务器屏幕进行监控,当某一应用提交显卡操作时,镜像显卡驱动获取服务器屏幕画面变化请求,执行步骤2;

步骤2:判断服务器屏幕画面是否发生变化,具体地镜像显卡驱动是否获取到服务器屏幕画面变化请求,若是则执行步骤3,否则返回步骤1;

步骤3:将服务器屏幕变化映射到具体的应用窗口,具体为查找Windows的对象,从而将屏幕变化映射到具体的应用窗口,执行步骤4;

步骤4:根据各应用窗口操作判断是否影响缓存更新,若是则执行步骤5,否则执行步骤8;

步骤5:判断各影响缓存更新的应用窗口更新区域大小是否超过设定值,若是执行步骤6,否则执行步骤7;

步骤6:对于该应用窗口进行服务器缓存和客户端缓存的差异化更新,并在客户端显示服务器屏幕上的屏幕内容,执行步骤9;

步骤7:对于该应用窗口进行服务器缓存和客户端缓存的合并更新,并在客户端显示服务器屏幕上的屏幕内容,执行步骤9;

步骤8:从服务器缓存表中提取屏幕上对应的应用窗口的缓存索引并发送至客户端,客户端从客户端缓存表中提取与缓存索引对应的图像并在客户端显示,执行步骤9,其中服务器缓存表为哈希表,该哈希表包括哈希索引和对应的画面RGB数据,所述的哈希索引即为缓存索引,所述的客户端缓存表为与服务器缓存表相一致的哈希表;

步骤9:判断是否结束远程显示,若是则结束,否则返回步骤1。

其中步骤4中根据应用窗口判断是否影响缓存更新具体为:查找存储的应用-窗口属性列表,判断应用窗口的属性为可见窗口或不可见窗口,若为可见窗口则该应用窗口影响缓存更新,若为不可见窗口则该应用窗口不影响缓存更新。

步骤6中差异化更新具体为:以服务器屏幕上显示的应用窗口左上角为坐标原点,将整个应用窗口划分为多个大小相同的网格,从服务器缓存表中提取该应用窗口的原缓存画面,将各网格与原缓存画面中对应网格部位进行对比,提取不一致的网格对应的坐标并生成网格更新列表,所述的网格更新列表包括应用窗口对应网格坐标以及对应的画面RGB数据,进而进行服务器缓存和客户端缓存的更新。

步骤7中合并更新具体为:获取服务器屏幕更新区域所在应用窗口的整体画面RGB数据,进行服务器缓存和客户端缓存的更新。

步骤6、步骤7实现了两种不同的窗口更新方式,对于更新区域大的应用窗口采用差异化更新,以减少全屏更新带来的网络数据量大和屏幕显示慢的缺点,对更新区域小的采用合并更新,以减少多次小更新带来的网络数据包过多以及客户端计算资源浪费的缺点。

在进行画面服务器缓存或客户端缓存更新时,如果缓存空间已满,主要采用FIFO、LRU、LFU等缓存替换算法进行缓存替换。

其中:FIFO(First IN First Out)算法:是先进先出算法,它总是替换最先调入缓存的画面,即替换在缓存中驻留时间最长的画面,认为驻留时间最长的画面不再被使用的可能性较大。

LRU(Least Recently Used)算法:将最近一段时间最少使用的画面替换出缓存,它是基于程序局部性原理来考虑的,认为那些刚被使用过的画面可能还要立即被使用,而那些在较长时间内未被使用的画面可能不会立即被使用。

LFU(Lease Frequently Used)算法:即最不经常使用置换算法,将访问次数最少的内容替换出缓存,要求在画面置换时置换引用计数最小的画面,因为经常被使用的画面应该有一个较大的引用次数。但是有些画面在开始时使用次数很多,但以后就不再使用,这类画面将会长时间留在缓存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。

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