專利名稱:基于遠(yuǎn)程幀緩存的窗口還原方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,具體涉及一種基于遠(yuǎn)程幀緩存的窗口還原方法。
背景技術(shù):
如圖1所述,為傳統(tǒng)的遠(yuǎn)程幀緩存技術(shù)總體框架的示意圖。遠(yuǎn)程幀緩存技術(shù),國際上通常稱之為RFB技術(shù),它是一種可以訪問遠(yuǎn)程計(jì)算機(jī)桌面環(huán)境的成熟技術(shù),RFB技術(shù)在unix/linux等操作系統(tǒng)上的應(yīng)用主要是基于xll標(biāo)準(zhǔn)的可視化環(huán)境。RFB技術(shù)包括了桌面圖像的采集、編碼、傳輸、解碼及還原等相關(guān)環(huán)節(jié)。針對遠(yuǎn)程服務(wù)器端的桌面圖像信息將遠(yuǎn)程服務(wù)器端的圖像幀緩存數(shù)據(jù)從Xll數(shù)據(jù)生成層(最底層)中提取出來,經(jīng)過編碼層的編碼后經(jīng)過服務(wù)器端的網(wǎng)絡(luò)通訊層傳輸?shù)奖镜乜蛻舳说目蛻舳司W(wǎng)絡(luò)層,經(jīng)過本地客戶端的解碼層的解碼后,在本地進(jìn)行顯示,從而將遠(yuǎn)程服務(wù)器端的桌面圖像信息虛擬到本地客戶端上進(jìn)行顯示。針對本地客戶端的控制信息采集本地客戶端通過輸入裝置(如鍵盤、鼠標(biāo))輸入的控制信息,經(jīng)過編碼層編碼后通過客戶端網(wǎng)絡(luò)層傳輸?shù)竭h(yuǎn)程服務(wù)器端的網(wǎng)絡(luò)通訊層,在服務(wù)器端經(jīng)過解碼后通過Xll層窗口管理器對控制信息進(jìn)行解析,并對桌面圖像進(jìn)行操作。當(dāng)然,服務(wù)器端的本地輸入裝置(如本地鍵盤、鼠標(biāo)等)也可以對服務(wù)器端的桌面圖像進(jìn)行控制,本地輸出裝置(如顯示器)也可以對服務(wù)器端的桌面圖像進(jìn)行顯示輸出。然而,遠(yuǎn)程幀緩 存技術(shù)只能提供遠(yuǎn)程桌面圖像信息,而不能從桌面圖像信息中提取窗口信息,即,不能在本地客戶端上還原應(yīng)用程序的窗口,使得在客戶端對服務(wù)器端應(yīng)用程序的操控感受不能像在服務(wù)器端一樣真實(shí)。
發(fā)明內(nèi)容
針對上述問題,本發(fā)明的目的在于提供一種基于遠(yuǎn)程幀緩存的窗口還原方法,使得在本地客戶端虛擬化遠(yuǎn)程服務(wù)器端的應(yīng)用程序變得切實(shí)可行。為實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案
基于遠(yuǎn)程幀緩存的窗口還原方法,包括步驟
步驟A :從服務(wù)器端的Xll數(shù)據(jù)生成層提取圖像幀緩存數(shù)據(jù);
步驟B 從服務(wù)器端的Xl I層窗口管理器捕獲應(yīng)用窗口信息數(shù)據(jù),所述應(yīng)用窗口信息數(shù)據(jù)包括服務(wù)器端正在運(yùn)行的所有應(yīng)用程序窗口的ID、坐標(biāo)、狀態(tài)及類型;
步驟C :將所述圖像幀緩存數(shù)據(jù)和應(yīng)用窗口信息數(shù)據(jù)從服務(wù)器端傳輸至本地客戶端;步驟D :在本地客戶端中根據(jù)所述圖像幀緩存數(shù)據(jù)和應(yīng)用窗口信息數(shù)據(jù)還原出遠(yuǎn)程正在運(yùn)行的應(yīng)用程序窗口圖像。
本發(fā)明的有益效果在于
基于現(xiàn)有的遠(yuǎn)程幀緩存技術(shù),在圖像幀緩存數(shù)據(jù)中利用窗口信息,使得在本地客戶端上能夠虛擬化遠(yuǎn)程應(yīng)用程序,從而能夠控制應(yīng)用程序本身,而不是桌面本身,從而實(shí)現(xiàn)應(yīng)用程序的虛擬化。
圖1為傳統(tǒng)的遠(yuǎn)程幀緩存技術(shù)總體框架的示意 圖2為實(shí)現(xiàn)本發(fā)明的基于遠(yuǎn)程幀緩存的窗口還原方法的總體框架示意 圖3為本發(fā)明的基于遠(yuǎn)程幀緩存的窗口還原方法的流程 圖4為本發(fā)明的基于遠(yuǎn)程幀緩存的窗口還原方法中對服務(wù)器端的窗口程序進(jìn)行控制的流程圖。
具體實(shí)施例方式下面,結(jié)合附圖以及具體實(shí)施方式
,對本發(fā)明做進(jìn)一步描述
如圖2所示,為實(shí)現(xiàn)本發(fā)明的基于遠(yuǎn)程幀緩存的窗口還原方法的總體框架示意圖。相對于現(xiàn)有技術(shù)的遠(yuǎn)程幀緩存技術(shù)總體框架,本發(fā)明的基于遠(yuǎn)程幀緩存的窗口還原方法包括步驟(結(jié)合圖2的步驟1-5和圖3):
步驟301 :從服務(wù)器端的Xll數(shù)據(jù)生成層提取圖像幀緩存數(shù)據(jù);
步驟302 從服務(wù)器端的Xl I層窗口管理器捕獲應(yīng)用窗口信息數(shù)據(jù),所述應(yīng)用窗口信息數(shù)據(jù)包括窗口的ID、坐標(biāo)、狀態(tài)及類型等;其中,窗口的ID為窗口的唯一標(biāo)識(shí),窗口的坐標(biāo)為窗口在桌面上的坐標(biāo)位置,窗口的狀態(tài)主要涉及窗口是否可顯,是否激活,窗口的父子關(guān)系等,窗口的類型包括對話框窗口、彈出式菜單窗口、下拉式菜單窗口、工具欄窗口、組合框窗口等共15種窗口類型。通過以上幾種信息,我們就可以將一窗口從xll層窗口管理器中提取出來,然后,把這些信息附加到只有桌面圖像信息的RFB實(shí)現(xiàn)中,就可以在RFB圖像數(shù)據(jù)中還原出窗口,而且,窗口信息的提取工作與窗口在遠(yuǎn)程服務(wù)器端的運(yùn)行過程同步進(jìn)行,保證了信息的高度實(shí)時(shí)性。在其他實(shí)施方式中,為了使窗口在本地客戶端與在遠(yuǎn)程服務(wù)器端有完全一致的虛擬,所述的應(yīng)用窗口信息數(shù)據(jù)還可以進(jìn)一步包括窗口的圖標(biāo)和窗口的標(biāo)題,窗口的圖標(biāo)即應(yīng)用程序中設(shè)定的窗口圖標(biāo),一般在窗口的左上方或右上方顯不,窗口的標(biāo)題為應(yīng)用程序中設(shè)定的窗口標(biāo)題,一般在窗口的上方顯示,從而根據(jù)所有應(yīng)用窗口信息數(shù)據(jù)即可將遠(yuǎn)程服務(wù)器端正在運(yùn)行的應(yīng)用程序完整虛擬到本地客戶端上。步驟303 :將所述圖像幀緩存數(shù)據(jù)和應(yīng)用窗口信息數(shù)據(jù)從服務(wù)器端傳輸至本地客戶端;
步驟304 :在本地客戶端中根據(jù)所述圖像幀緩存數(shù)據(jù)和應(yīng)用窗口信息數(shù)據(jù)還原出遠(yuǎn)程正在運(yùn)行的應(yīng)用程序窗口圖像。在步驟302中,針對處于不同生命周期的窗口,從服務(wù)器端的Xll層窗口管理器捕獲所述窗口的應(yīng)用窗口信息數(shù)據(jù),其中,窗口的生命周期包括窗口的創(chuàng)建、窗口的設(shè)置、窗口的顯示、窗口的隱藏、窗口的關(guān)閉及窗口的銷毀。
進(jìn)一步地,在本實(shí)施方式中,針對步驟303,服務(wù)器端先將所述圖像幀緩存數(shù)據(jù)和應(yīng)用窗口信息數(shù)據(jù)進(jìn)行編碼后再進(jìn)行傳輸,本地客戶端在接收到編碼的圖像幀緩存數(shù)據(jù)和應(yīng)用窗口信息數(shù)據(jù)后進(jìn)行解碼,步驟304中根據(jù)解碼后的圖像幀緩存數(shù)據(jù)和應(yīng)用窗口信息數(shù)據(jù)還原出遠(yuǎn)程正在運(yùn)行的應(yīng)用程序窗口圖像。在步驟304中,將所述圖像幀緩存數(shù)據(jù)根據(jù)應(yīng)用窗口信息數(shù)據(jù)中的窗口坐標(biāo)進(jìn)行切割,取出特定位置上的圖像數(shù)據(jù),并放至本地客戶端的相應(yīng)窗口中,還原出對應(yīng)的遠(yuǎn)程應(yīng)用程序窗口圖像。由于窗口信息數(shù)據(jù)和圖像幀緩存數(shù)據(jù)都具有高度的實(shí)時(shí)性,所以,本地客戶端上的遠(yuǎn)程窗口 “看上去”就像一個(gè)真正的本地應(yīng)用窗口。 上述描述只是涉及到如何將服務(wù)器端的窗口在本地客戶端上進(jìn)行虛擬還原,下面的描述將針對在本地客戶端上根據(jù)本地的輸入裝置(如鼠標(biāo)、鍵盤等)對遠(yuǎn)端的窗口進(jìn)行控制操作的原理(結(jié)合圖2中的步驟6-10和圖4)。在本地客戶端上顯示遠(yuǎn)程服務(wù)器端的窗口后,所述基于遠(yuǎn)程幀緩存的窗口還原方法還進(jìn)一步地包括
步驟401 :在本地客戶端捕獲本地輸入裝置對窗口的輸入事件或請求事件;其中,所述請求事件包括窗口關(guān)閉請求、窗口最小化請求及窗口還原請求。需要明確的是,圖2中的控制信息為所有與控制操作相關(guān)的信息,包括描述的窗口輸入事件和請求事件。步驟402 :將所述輸入事件或請求事件從本地客戶端傳輸至服務(wù)器端;
步驟403 :在服務(wù)器端通過Xll層窗口管理器對所述輸入事件或請求事件進(jìn)行窗口事件解析,并對相應(yīng)窗口進(jìn)行操作。同樣地,針對上述控制過程中的傳輸步驟402,在本實(shí)施方式中,本地客戶端將所述輸入事件或請求事件進(jìn)行編碼后再進(jìn)行傳輸,服務(wù)器端在接收到編碼的輸入事件或請求事件后進(jìn)行解碼,步驟403中服務(wù)器端的Xll層窗口管理器根據(jù)解碼后的輸入事件或請求事件對窗口進(jìn)行操作。在本實(shí)施方式中,還原應(yīng)用程序窗口圖像和控制遠(yuǎn)程應(yīng)用程序所采用的窗口信息協(xié)議中,采用的通知事件包括窗口的創(chuàng)建事件(事件號為64)、窗口的刪除事件(事件號為63)、窗口的顯示事件(事件號為60)、窗口的隱藏事件(事件號為61)、窗口的大小更改事件(事件號為62)、窗口狀態(tài)的更改事件(事件號為67)、窗口屬性的更改事件(事件號為68)及窗口激活事件(事件號為71)。對于本領(lǐng)域的技術(shù)人員來說,可根據(jù)以上描述的技術(shù)方案以及構(gòu)思,做出其它各種相應(yīng)的改變以及變形,而所有的這些改變以及變形都應(yīng)該屬于本發(fā)明權(quán)利要求的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.基于遠(yuǎn)程幀緩存的窗口還原方法,其特征在于,包括步驟 步驟A :從服務(wù)器端的Xll數(shù)據(jù)生成層提取圖像幀緩存數(shù)據(jù); 步驟B 從服務(wù)器端的Xl I層窗口管理器捕獲應(yīng)用窗口信息數(shù)據(jù),所述應(yīng)用窗口信息數(shù)據(jù)包括服務(wù)器端正在運(yùn)行的所有應(yīng)用程序窗口的ID、坐標(biāo)、狀態(tài)及類型; 步驟C :將所述圖像幀緩存數(shù)據(jù)和應(yīng)用窗口信息數(shù)據(jù)從服務(wù)器端傳輸至本地客戶端; 步驟D :在本地客戶端中根據(jù)所述圖像幀緩存數(shù)據(jù)和應(yīng)用窗口信息數(shù)據(jù)還原出遠(yuǎn)程正在運(yùn)行的應(yīng)用程序窗口圖像。
2.如權(quán)利要求1所述的基于遠(yuǎn)程幀緩存的窗口還原方法,其特征在于,步驟C中,服務(wù)器端先將所述圖像幀緩存數(shù)據(jù)和應(yīng)用窗口信息數(shù)據(jù)進(jìn)行編碼后再進(jìn)行傳輸,本地客戶端在接收到編碼的圖像幀緩存數(shù)據(jù)和應(yīng)用窗口信息數(shù)據(jù)后進(jìn)行解碼,步驟D中根據(jù)解碼后的圖像幀緩存數(shù)據(jù)和應(yīng)用窗口信息數(shù)據(jù)還原遠(yuǎn)程正在運(yùn)行的應(yīng)用程序窗口圖像。
3.如權(quán)利要求1或2所述的基于遠(yuǎn)程幀緩存的窗口還原方法,其特征在于,在步驟B中,針對處于不同生命周期的窗口,從服務(wù)器端的Xll層窗口管理器捕獲所述窗口的應(yīng)用窗口信息數(shù)據(jù),其中,窗口的生命周期包括窗口的創(chuàng)建、窗口的設(shè)置、窗口的顯示、窗口的隱藏、窗口的關(guān)閉及窗口的銷毀。
4.如權(quán)利要求3所述的基于遠(yuǎn)程幀緩存的窗口還原方法,其特征在于,在步驟D中,將所述圖像幀緩存數(shù)據(jù)根據(jù)應(yīng)用窗口信息數(shù)據(jù)中的坐標(biāo)進(jìn)行切割,取出特定位置上的圖像數(shù)據(jù),并放至本地客戶端的相應(yīng)窗口中,還原出對應(yīng)的遠(yuǎn)程應(yīng)用程序窗口圖像。
5.如權(quán)利要求4所述的基于遠(yuǎn)程幀緩存的窗口還原方法,其特征在于,所述基于遠(yuǎn)程幀緩存的窗口還原方法還包括 步驟E :在本地客戶端捕獲本地輸入裝置對窗口的輸入事件或請求事件; 步驟F :將所述輸入事件或請求事件從本地客戶端傳輸至服務(wù)器端; 步驟G :在服務(wù)器端通過Xll層窗口管理器對所述輸入事件或請求事件進(jìn)行窗口事件解析,并對相應(yīng)窗口進(jìn)行操作。
6.如權(quán)利要求5所述的基于遠(yuǎn)程幀緩存的窗口還原方法,其特征在于,所述請求事件包括窗口關(guān)閉請求、窗口最小化請求、及窗口還原請求。
7.如權(quán)利要求6所述的基于遠(yuǎn)程幀緩存的窗口還原方法,其特征在于,步驟F中,本地客戶端將所述輸入事件或請求事件進(jìn)行編碼后再進(jìn)行傳輸,服務(wù)器端在接收到編碼的輸入事件或請求事件后進(jìn)行解碼,步驟G中服務(wù)器端的Xll層窗口管理器根據(jù)解碼后的輸入事件或請求事件對窗口進(jìn)行操作。
8.如權(quán)利要求7所述的基于遠(yuǎn)程幀緩存的窗口還原方法,其特征在于,還原應(yīng)用程序窗口圖像和控制遠(yuǎn)程應(yīng)用程序所采用的窗口信息協(xié)議中,采用的通知事件包括窗口的創(chuàng)建事件、窗口的刪除事件、窗口的顯示事件、窗口的隱藏事件、窗口的大小更改事件、窗口狀態(tài)的更改事件、窗口屬性的更改事件及窗口激活事件。
全文摘要
本發(fā)明公開了一種基于遠(yuǎn)程幀緩存的窗口還原方法,包括步驟A:從服務(wù)器端的X11數(shù)據(jù)生成層提取圖像幀緩存數(shù)據(jù);步驟B從服務(wù)器端的X11層窗口管理器捕獲應(yīng)用窗口信息數(shù)據(jù),所述應(yīng)用窗口信息數(shù)據(jù)包括服務(wù)器端正在運(yùn)行的所有應(yīng)用程序窗口的ID、坐標(biāo)、狀態(tài)及類型;步驟C將圖像幀緩存數(shù)據(jù)和應(yīng)用窗口信息數(shù)據(jù)從服務(wù)器端傳輸至本地客戶端;步驟D在本地客戶端中根據(jù)所述圖像幀緩存數(shù)據(jù)和應(yīng)用窗口信息數(shù)據(jù)還原出遠(yuǎn)程正在運(yùn)行的應(yīng)用程序窗口圖像。通過本發(fā)明的基于遠(yuǎn)程幀緩存的窗口還原方法,使得在本地客戶端上能夠查看并控制遠(yuǎn)程應(yīng)用窗口,從而實(shí)現(xiàn)應(yīng)用程序的虛擬化。
文檔編號G06F9/44GK103049262SQ20121053681
公開日2013年4月17日 申請日期2012年12月12日 優(yōu)先權(quán)日2012年12月12日
發(fā)明者潘旭東 申請人:廣州尚融網(wǎng)絡(luò)科技有限公司