欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種虛擬機RFB協(xié)議桌面分辨率自適應(yīng)實現(xiàn)系統(tǒng)和方法與流程

文檔序號:11514719閱讀:659來源:國知局
一種虛擬機RFB協(xié)議桌面分辨率自適應(yīng)實現(xiàn)系統(tǒng)和方法與流程

本發(fā)明涉及虛擬機技術(shù)領(lǐng)域,特別是涉及一種虛擬機rfb協(xié)議桌面分辨率自適應(yīng)實現(xiàn)系統(tǒng)和方法。



背景技術(shù):

在虛擬化平臺中,如云桌面平臺,各個虛擬機同時運行在物理機上共享物理機的硬件資源。由于物理機中用于支持桌面環(huán)境的顯示設(shè)備資源是有限的,運行在物理機上的各個虛擬機會分別提供虛擬的顯卡等顯示設(shè)備資源,并通過計算機網(wǎng)絡(luò)實現(xiàn)允許用戶遠程訪問虛擬機的桌面環(huán)境。為了能夠通過計算機網(wǎng)絡(luò)傳輸圖像信息和用戶的輸入數(shù)據(jù),需要在虛擬化平臺中實現(xiàn)特定遠程桌面協(xié)議。rfb(remoteframebuffer,遠程幀緩沖)協(xié)議是一種被廣泛使用的遠程桌面協(xié)議,能夠?qū)崿F(xiàn)在網(wǎng)絡(luò)上傳輸圖像信息和用戶的輸入數(shù)據(jù),xen、kvm等虛擬化技術(shù)方案包含了對rfb遠程桌面協(xié)議的支持。

遠程桌面的用戶可能會在具有不同的顯示分辨率的終端環(huán)境中訪問虛擬機。當虛擬機內(nèi)操作系統(tǒng)的桌面分辨率設(shè)置和客戶端終端環(huán)境的分辨率不一致時,會帶來一系列的問題。當虛擬機內(nèi)操作系統(tǒng)的桌面分辨率大于客戶端終端環(huán)境的分辨率時,虛擬機內(nèi)操作系統(tǒng)的桌面無法在客戶端的終端環(huán)境上完整顯示;當虛擬機內(nèi)操作系統(tǒng)的桌面分辨率小于客戶端終端環(huán)境的分辨率時,由于虛擬機內(nèi)操作系統(tǒng)的桌面無法完整覆蓋客戶端的顯示設(shè)備,從而在客戶端上留下無法操作的空白區(qū)域。這兩種情況下均會給使用遠程桌面的用戶帶來不便。

現(xiàn)有的解決上述分辨率不一致問題的方法包括縮放和分辨率的手動設(shè)置。通過縮放虛擬機內(nèi)的操作系統(tǒng)桌面到和終端環(huán)境上的相同大小,可以實現(xiàn)視覺上虛擬機內(nèi)的操作系統(tǒng)桌面恰好鋪滿客戶端終端環(huán)境的屏幕,這種方法存在導致畫質(zhì)下降以及當虛擬機內(nèi)桌面分辨率的長寬比和客戶端終端環(huán)境屏幕長寬比不一致時縮放后的界面長寬比例不合理的問題。有一些遠程桌面方案允許用戶手動修改虛擬機內(nèi)操作系統(tǒng)的分辨率,以保證虛擬機的分辨率設(shè)置和終端環(huán)境的分辨率設(shè)置相一致,這種方法要求用戶需要了解自己所使用的終端設(shè)備的分辨率、并且在用戶更換終端環(huán)境或者顯示設(shè)備時需要重新進行設(shè)置,不具備便利性。

rfb作為一種遠程桌面協(xié)議,其本身并不支持分辨率自適應(yīng)功能,虛擬化技術(shù)方案所提供的rfb服務(wù)端或者虛擬機內(nèi)運行的操作系統(tǒng)均不能通過該協(xié)議獲取客戶端所期望的分辨率。為了提升基于rfb協(xié)議的遠程桌面系統(tǒng)的易用性,可以在現(xiàn)有的基于rfb協(xié)議的遠程桌面架構(gòu)基礎(chǔ)上增加對客戶端分辨率的自適應(yīng)功能。

在實現(xiàn)虛擬桌面的分辨率自適應(yīng)方案時,主要需要解決下列問題:

(1)遠程桌面通信協(xié)議中對傳輸客戶端分辨率信息的支持問題;

(2)虛擬化平臺中的虛擬機硬件模擬器和虛擬機中的操作系統(tǒng)的通信問題;

(3)虛擬機操作系統(tǒng)中動態(tài)調(diào)整分辨率的問題。



技術(shù)實現(xiàn)要素:

針對現(xiàn)有技術(shù)的不足,本發(fā)明提出一種虛擬機rfb桌面分辨率自適應(yīng)實現(xiàn)系統(tǒng)和方法,實現(xiàn)客戶端分辨率信息的傳輸和虛擬機分辨率的自適應(yīng)。

一種虛擬機rfb桌面分辨率自適應(yīng)實現(xiàn)系統(tǒng),基于rfb遠程連接,包括:

客戶端分辨率獲取模塊,用于獲取客戶端的桌面分辨率信息,并將桌面分辨率信息通過擴展的rfb協(xié)議發(fā)送給rfb遠程桌面服務(wù)端;

rfb遠程桌面服務(wù)端,用于接收來自客戶端分辨率獲取模塊的桌面分辨率信息,將桌面分辨率信息發(fā)送給虛擬usb通信設(shè)備;

虛擬usb通信設(shè)備,用于接收來自rfb遠程桌面服務(wù)端的桌面分辨率信息,將桌面分辨率信息發(fā)送給虛擬機分辨率設(shè)置模塊;

虛擬機分辨率設(shè)置模塊,用于初始化虛擬usb通信設(shè)備,接收虛擬usb通信設(shè)備發(fā)送的桌面分辨率信息,根據(jù)接收的桌面分辨率信息設(shè)置虛擬機內(nèi)操作系統(tǒng)的分辨率。

所述的客戶端分辨率獲取模塊增設(shè)于rfb遠程桌面客戶端,通過增加監(jiān)聽客戶端的桌面分辨率信息的更新等事件的功能實現(xiàn)。

所述的客戶端分辨率獲取模塊通過調(diào)用客戶端的網(wǎng)絡(luò)通信接口實現(xiàn)客戶端桌面分辨率信息的發(fā)送。

所述的rfb遠程桌面客戶端源程序的rfb消息發(fā)送部分,增加了傳輸桌面分辨率信息的功能。

優(yōu)選的,rfb遠程桌面客戶端為現(xiàn)有的基于java和swing框架的vnc客戶端;監(jiān)聽功能基于swing框架的resizelistener基類創(chuàng)建;在vnc客戶端源程序的rfb消息發(fā)送部分,增加傳輸桌面分辨率信息的功能。

擴展的rfb協(xié)議中定義了用于傳輸桌面分辨率信息的新消息類型來實現(xiàn)桌面分辨率信息的傳輸。rfb協(xié)議通過在tcp流中傳輸不同類型的消息實現(xiàn)客戶端和服務(wù)端之間用戶輸入、屏幕圖像等信息的傳輸。

所述的rfb遠程桌面服務(wù)端在虛擬化平臺中的虛擬機硬件模擬器中實現(xiàn),在rfb遠程桌面服務(wù)端增加了對所述的用于傳輸桌面分辨率信息的新消息類型的識別和處理,使得rfb遠程桌面服務(wù)端能夠處理來自客戶端分辨率獲取模塊的桌面分辨率信息。

所述的虛擬usb通信設(shè)備在虛擬化平臺中的虛擬機硬件模擬器中實現(xiàn),通過在設(shè)備模擬部分增加對虛擬usb通信設(shè)備的模擬和注冊,使得虛擬機的硬件模擬器可以通過虛擬usb通信設(shè)備向分辨率設(shè)置模塊發(fā)送分辨率信息。

優(yōu)選的,虛擬化平臺為xen,虛擬機硬件模擬器為qemu。

修改qemu中的rfb遠程桌面服務(wù)端模塊中用于實現(xiàn)rfb消息的接收和處理的部分,增加接收和處理本系統(tǒng)所定義的用于傳輸客戶端分辨率信息的rfb消息的功能。

修改qemu中的硬件模擬器模塊中用于實現(xiàn)usb總線和usb設(shè)備模擬的部分,增加對本系統(tǒng)所定義的虛擬usb通信設(shè)備的模擬和注冊功能。

qemu會模擬一個基于pci的usb控制器的行為,qemu允許用戶接入模擬或者真實的usb設(shè)備到虛擬機中。當多個usb設(shè)備需要連接到虛擬機中時,qemu會自動增加所需的usbhub設(shè)備。

虛擬usb通信設(shè)備的注冊采用定義usbdevice命令行參數(shù)或采用usb_add命令。

所述的虛擬機分辨率設(shè)置模塊以用戶態(tài)進程的方式運行在虛擬機操作系統(tǒng)內(nèi)部。虛擬機分辨率設(shè)置模塊初始化虛擬usb通信設(shè)備并處理來自該設(shè)備的桌面分辨率信息。當桌面分辨率信息更新時,根據(jù)虛擬機內(nèi)所運行的操作系統(tǒng)的不同,虛擬機分辨率設(shè)置模塊調(diào)用虛擬機內(nèi)正在運行的操作系統(tǒng)所支持的分辨率設(shè)置接口,實現(xiàn)調(diào)整虛擬機分辨率的功能。

所述的虛擬機分辨率設(shè)置模塊在虛擬機內(nèi)操作系統(tǒng)啟動后會自動運行和初始化。

所述的虛擬機分辨率設(shè)置模塊初始化虛擬usb通信設(shè)備包括如下步驟:

(1)虛擬機分辨率設(shè)置模塊遍歷虛擬機所連接的usb設(shè)備列表;

(2)根據(jù)usb設(shè)備的pid(產(chǎn)品標識)和vid(廠商標識)信息查找到本系統(tǒng)的虛擬usb通信設(shè)備;

(3)找到符合條件的設(shè)備,虛擬機分辨率設(shè)置模塊打開該設(shè)備,并在預先定義的端點(endpoint)中讀取數(shù)據(jù)。

優(yōu)選的,虛擬機操作系統(tǒng)為windows操作系統(tǒng);操作系統(tǒng)所支持的分辨率設(shè)置接口為changedisplaysettings接口。

一種虛擬機rfb桌面分辨率自適應(yīng)實現(xiàn)方法,包括如下步驟:

(1)rfb遠程桌面連接初始化時或者客戶端的桌面分辨率發(fā)生改變時,客戶端分辨率獲取模塊獲取客戶端的桌面分辨率信息;

(2)客戶端分辨率獲取模塊將所述的桌面分辨率信息通過擴展的rfb協(xié)議發(fā)送給rfb遠程桌面服務(wù)端;

(3)rfb遠程桌面服務(wù)端通過虛擬usb通信設(shè)備將所述的桌面分辨率信息發(fā)送給虛擬機分辨率設(shè)置模塊;

(4)虛擬機分辨率設(shè)置模塊調(diào)用虛擬機內(nèi)正在運行的操作系統(tǒng)所支持的分辨率設(shè)置接口,根據(jù)所述的桌面分辨率信息調(diào)整虛擬機分辨率,使得虛擬機分辨率與客戶端桌面分辨率一致。

所述的步驟(1)中,以在現(xiàn)有的基于java和swing框架的vnc客戶端上進行修改為例,修改vnc客戶端源程序中用于實現(xiàn)rfb遠程桌面連接初始化的部分,增加監(jiān)聽rfb遠程桌面連接初始化事件的功能。

所述的監(jiān)聽rfb遠程桌面連接初始化事件通過修改客戶端的邏輯實現(xiàn)。

所述的步驟(1)中,以在現(xiàn)有的基于java和swing框架的vnc客戶端上進行修改為例,客戶端分辨率獲取模塊獲取客戶端的桌面分辨率信息包括如下步驟:

(1-1)基于swing框架的resizelistener基類,創(chuàng)建用于監(jiān)聽客戶端窗口分辨率的改變的監(jiān)聽器類;

(1-2)修改vnc客戶端源程序中用于實現(xiàn)客戶端窗口管理的部分,在客戶端窗口創(chuàng)建時,調(diào)用swing框架中的jpanel.addcomponentlistener函數(shù),將上一步所注冊的監(jiān)聽器類注冊至客戶端窗口的監(jiān)聽器列表中。

所述的步驟(2)中,客戶端分辨率獲取模塊通過調(diào)用客戶端的網(wǎng)絡(luò)通信接口實現(xiàn)客戶端桌面分辨率信息的發(fā)送。

所述的步驟(4)中,以在windows操作系統(tǒng)上實現(xiàn)為例,虛擬機分辨率設(shè)置模塊調(diào)整虛擬機分辨率包括如下步驟:

(4-1)調(diào)用windows操作系統(tǒng)提供的enumdisplaysettings接口,枚舉當前系統(tǒng)中可用的分辨率選項;

(4-2)在客戶端分辨率信息產(chǎn)生變更時,在當前系統(tǒng)的可用分辨率選項中找到與客戶端桌面分辨率信息最為相似的分辨率選項;

(4-3)調(diào)用windows操作系統(tǒng)提供的changedisplaysettings接口,將操作系統(tǒng)內(nèi)分辨率設(shè)置為與客戶端桌面分辨率信息最為相似的分辨率選項。

本發(fā)明在上述的基于rfb協(xié)議的桌面虛擬化平臺中,通過擴展rfb協(xié)議、增加用于通信的虛擬usb通信設(shè)備的方法,實現(xiàn)了客戶端桌面分辨率信息的傳輸和虛擬機分辨率的自適應(yīng)。和其它的實現(xiàn)方案相比,本方案實現(xiàn)了在rfb遠程桌面連接內(nèi)部傳輸客戶端分辨率信息,不需要虛擬化平臺開放額外的分辨率控制端口。同時,本方案在保證驅(qū)動程序的可移植性的前提下,基于虛擬的usb通信設(shè)備實現(xiàn)了虛擬化平臺中虛擬機內(nèi)分辨率信息的傳輸,可以適配虛擬機內(nèi)不同類型的客戶操作系統(tǒng)。

附圖說明

圖1為虛擬機rfb桌面分辨率自適應(yīng)實現(xiàn)系統(tǒng)的架構(gòu)示意圖;

圖2為虛擬機rfb桌面分辨率自適應(yīng)實現(xiàn)方法的流程圖。

具體實施方式

下面結(jié)合附圖和實施例,對本發(fā)明做進一步的詳細描述。本發(fā)明的實施例中,客戶端為現(xiàn)有的基于java和swing框架的vnc客戶端,虛擬機的操作系統(tǒng)為windows操作系統(tǒng)。

本發(fā)明的系統(tǒng)架構(gòu)如圖1所示。虛擬機rfb桌面分辨率自適應(yīng)實現(xiàn)系統(tǒng),基于rfb遠程連接,包括:

客戶端分辨率獲取模塊,用于獲取客戶端的桌面分辨率信息,并將桌面分辨率信息通過擴展的rfb協(xié)議發(fā)送給rfb遠程桌面服務(wù)端。

客戶端分辨率獲取模塊增設(shè)于vnc客戶端,通過增加監(jiān)聽客戶端桌面分辨率信息的更新等事件的功能實現(xiàn),監(jiān)聽功能基于swing框架的resizelistener基類創(chuàng)建。

客戶端分辨率獲取模塊通過調(diào)用客戶端的網(wǎng)絡(luò)通信接口實現(xiàn)客戶端桌面分辨率信息的發(fā)送,在vnc客戶端源程序的rfb消息發(fā)送部分,增加傳輸客戶端桌面分辨率信息的功能。

擴展的rfb協(xié)議中定義了用于傳輸桌面分辨率信息的新消息類型來實現(xiàn)桌面分辨率信息的傳輸。rfb協(xié)議通過在tcp流中傳輸不同類型的消息實現(xiàn)客戶端和服務(wù)端之間用戶輸入、屏幕圖像等信息的傳輸。

rfb遠程桌面服務(wù)端,在虛擬化平臺xen中的虛擬機硬件模擬器qemu中實現(xiàn),用于接收來自客戶端分辨率獲取模塊的桌面分辨率信息,將桌面分辨率信息發(fā)送給虛擬usb通信設(shè)備,修改qemu中的rfb遠程桌面服務(wù)端模塊中用于實現(xiàn)rfb消息的接收和處理的部分,增加接收和處理本系統(tǒng)所定義的用于傳輸客戶端桌面分辨率信息的rfb消息的功能。

虛擬usb通信設(shè)備,在虛擬化平臺xen中的虛擬機硬件模擬器qemu中實現(xiàn),用于接收來自rfb遠程桌面服務(wù)端的桌面分辨率信息,將桌面分辨率信息發(fā)送給虛擬機分辨率設(shè)置模塊,修改qemu中的硬件模擬器模塊中用于實現(xiàn)usb總線和usb設(shè)備模擬的部分,增加對本系統(tǒng)所定義的虛擬usb通信設(shè)備的模擬和注冊功能。

qemu會模擬一個基于pci的usb控制器的行為,qemu允許用戶接入模擬或者真實的usb設(shè)備到虛擬機中。當多個usb設(shè)備需要連接到虛擬機中時,qemu會自動增加所需的usbhub設(shè)備。

虛擬usb通信設(shè)備的注冊采用定義usbdevice命令行參數(shù)或采用usb_add命令。

虛擬機分辨率設(shè)置模塊以用戶態(tài)進程的方式運行在虛擬機操作系統(tǒng)內(nèi)部。虛擬機分辨率設(shè)置模塊初始化虛擬usb通信設(shè)備并處理來自該設(shè)備的分辨率信息。當分辨率信息更新時,虛擬機分辨率設(shè)置模塊調(diào)用changedisplaysettings接口,實現(xiàn)調(diào)整虛擬機分辨率的功能。

虛擬機分辨率設(shè)置模塊遍歷虛擬機所連接的usb設(shè)備列表;根據(jù)usb設(shè)備的pid(產(chǎn)品標識)和vid(廠商標識)信息查找到本系統(tǒng)的虛擬usb通信設(shè)備;找到符合條件的設(shè)備,虛擬機分辨率設(shè)置模塊打開該設(shè)備,并在預先定義的端點(endpoint)中讀取數(shù)據(jù)。

本發(fā)明的流程圖如圖2所示。一種虛擬機rfb桌面分辨率自適應(yīng)實現(xiàn)方法,包括如下步驟:

s1:rfb遠程桌面連接初始化時或者客戶端桌面分辨率發(fā)生改變時,客戶端分辨率獲取模塊獲取客戶端的桌面分辨率信息。

步驟s1中,修改vnc客戶端源程序中用于實現(xiàn)rfb遠程桌面連接初始化的部分,增加監(jiān)聽rfb遠程桌面連接初始化事件的功能。

客戶端分辨率獲取模塊獲取客戶端的桌面分辨率信息包括如下步驟:

(s1-1)基于swing框架的resizelistener基類,創(chuàng)建用于監(jiān)聽客戶端窗口分辨率的改變的監(jiān)聽器類;

(s1-2)修改vnc客戶端源程序中用于實現(xiàn)客戶端窗口管理的部分,在客戶端窗口創(chuàng)建時,調(diào)用swing框架中的jpanel.addcomponentlistener函數(shù),將上一步所注冊的監(jiān)聽器類注冊至客戶端窗口的監(jiān)聽器列表中。

s2:客戶端分辨率獲取模塊將桌面分辨率信息通過擴展的rfb協(xié)議發(fā)送給rfb遠程桌面服務(wù)端。

s3:rfb遠程桌面服務(wù)端通過虛擬usb通信設(shè)備將桌面分辨率信息發(fā)送給虛擬機分辨率設(shè)置模塊。

s4:虛擬機分辨率設(shè)置模塊調(diào)用虛擬機內(nèi)正在運行的操作系統(tǒng)所支持的分辨率設(shè)置接口,根據(jù)桌面分辨率信息調(diào)整虛擬機分辨率,使得虛擬機分辨率與客戶端桌面分辨率一致。

步驟s4中虛擬機分辨率設(shè)置模塊調(diào)整虛擬機分辨率包括如下步驟:

(s4-1)調(diào)用windows操作系統(tǒng)提供的enumdisplaysettings接口,枚舉當前系統(tǒng)中可用的分辨率選項。

(s4-2)在客戶端分辨率信息產(chǎn)生變更時,在當前系統(tǒng)的可用分辨率選項中找到與客戶端桌面分辨率信息最為相似的分辨率選項。

(s4-3)調(diào)用windows操作系統(tǒng)提供的changedisplaysettings接口,將操作系統(tǒng)內(nèi)分辨率設(shè)置為與客戶端桌面分辨率信息最為相似的分辨率選項。

上述的對實施例的描述是為了便于本技術(shù)領(lǐng)域的普通技術(shù)人員能理解和應(yīng)用本發(fā)明。熟悉本領(lǐng)域技術(shù)的人員顯然可以容易地對上述實施例做出各種修改,并把在此說明的一般原理應(yīng)用到其他實施例中而不必經(jīng)過改造性的勞動。因此,本發(fā)明不限于上述實施例,本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明的揭示,對于本發(fā)明做出的改進和修改都應(yīng)該在本發(fā)明的保護范圍之內(nèi)。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
民乐县| 建水县| 富顺县| 克什克腾旗| 绥中县| 米脂县| 海盐县| 东方市| 房山区| 左云县| 利川市| 阳西县| 德保县| 德令哈市| 廊坊市| 蒲城县| 珠海市| 柘荣县| 皮山县| 金乡县| 启东市| 柘城县| 庄浪县| 凤庆县| 湘西| 镇平县| 荆州市| 淮滨县| 会宁县| 上林县| 抚松县| 洛浦县| 育儿| 清镇市| 余干县| 海晏县| 通渭县| 沂南县| 会同县| 铁岭县| 拉孜县|