[0094] 如圖2所示,為一般的遠(yuǎn)程虛擬桌面系統(tǒng)示意圖,遠(yuǎn)程數(shù)據(jù)中心集中了服務(wù)器資源 和存儲(chǔ)資源100;通過(guò)虛擬化技術(shù)虛擬出多個(gè)虛擬機(jī)(英文全稱:Virtual Machine,英文簡(jiǎn) 稱:VM) 120,如圖2中VM1、VM2等,或者無(wú)需虛擬化技術(shù)直接使用物理計(jì)算機(jī)121,如圖2中 PM3,在這些虛擬機(jī)或者物理計(jì)算機(jī)上安裝操作系統(tǒng)130,并通過(guò)遠(yuǎn)程桌面協(xié)議150將遠(yuǎn)程虛 擬桌面的界面投遞在本地終端160上顯示出來(lái),同時(shí)把本地終端上的輸入輸出設(shè)備映射到 遠(yuǎn)程虛擬桌面的服務(wù)器端。
[0095] 如圖3所示為遠(yuǎn)程虛擬桌面系統(tǒng)架構(gòu),包括終端170(包括各種輸入輸出設(shè)備)、桌 面管理系統(tǒng)171、遠(yuǎn)程虛擬桌面計(jì)算機(jī)(包括虛擬機(jī)172,173和物理計(jì)算機(jī)174,175)三部分 組成;桌面管理系統(tǒng)171主要是管理遠(yuǎn)程虛擬桌面計(jì)算機(jī)(如圖3中172,173,174,175等)和 遠(yuǎn)程終端170的注冊(cè)以及用戶登錄遠(yuǎn)程虛擬桌面的管理;遠(yuǎn)程桌面協(xié)議由客戶端和服務(wù)端 組成,內(nèi)部根據(jù)不同功能劃分為不同的服務(wù)實(shí)現(xiàn),例如USB/串并口服務(wù)客戶端和服務(wù)器端 交互實(shí)現(xiàn)各種外設(shè)的映射重定向;顯示服務(wù)客戶端和服務(wù)器端交互實(shí)現(xiàn)遠(yuǎn)程虛擬桌面投遞 到終端顯示器;音頻服務(wù)客戶端和服務(wù)器端交互實(shí)現(xiàn)雙向音頻映射;多媒體服務(wù)客戶端和 服務(wù)器端交互實(shí)現(xiàn)多媒體服務(wù)的播放和錄制;鍵鼠服務(wù)客戶端和服務(wù)器端實(shí)現(xiàn)鍵盤與鼠標(biāo) 映射到遠(yuǎn)程虛擬桌面。
[0096] 本申請(qǐng)中,通常所述的"端口"(如串口C0M1或并口 LPT1等),即"端口設(shè)備文件",實(shí) 際上是一個(gè)符號(hào)連接,它的指向是可以調(diào)用操作系統(tǒng)提供的API對(duì)其進(jìn)行定義和修改的,以 最后的指向?yàn)闇?zhǔn);并且此"端口"所指向的對(duì)象,不一定要是在設(shè)備管理器中顯示的設(shè)備對(duì) 象,具體與實(shí)現(xiàn)有關(guān),還有,一個(gè)"端口"只能指向一個(gè)對(duì)象,但不同"端口"可以指向同一對(duì) 象。
[0097] 一般應(yīng)用程序在打開(kāi)"端口"時(shí),其操作的對(duì)象是此時(shí)"端口"所指向的對(duì)象,后續(xù) 此端口所指向的對(duì)象如果被更換,不影響之前已經(jīng)打開(kāi)的,只影響后續(xù)打開(kāi)的。
[0098] 下面介紹本申請(qǐng)中端口重定向的方法的實(shí)施例,本申請(qǐng)實(shí)施例中,端口重定向的 方法可以應(yīng)用于遠(yuǎn)程虛擬桌面系統(tǒng),服務(wù)器可以為遠(yuǎn)程數(shù)據(jù)中心中的虛擬機(jī)或者物理計(jì)算 機(jī),終端可以是瘦客戶機(jī)或物理計(jì)算機(jī)等。
[0099] 請(qǐng)參閱圖4,本申請(qǐng)中一種端口重定向的方法的一個(gè)實(shí)施例,在服務(wù)器預(yù)置有映射 關(guān)系配置表,所述映射關(guān)系配置表包括至少一個(gè)端口綁定關(guān)系,每個(gè)所述端口綁定關(guān)系記 錄一個(gè)虛擬端口標(biāo)識(shí)與一個(gè)物理端口標(biāo)識(shí)的綁定關(guān)系,所述端口綁定關(guān)系記錄的虛擬端口 標(biāo)識(shí)為區(qū)別所述服務(wù)器建立的虛擬端口的唯一標(biāo)識(shí),所述端口綁定關(guān)系記錄的物理端口標(biāo) 識(shí)為區(qū)別終端的物理端口的唯一標(biāo)識(shí);在所述服務(wù)器安裝有至少一個(gè)應(yīng)用,所述至少一個(gè) 應(yīng)用中的每個(gè)應(yīng)用分別對(duì)應(yīng)一個(gè)或多個(gè)所述端口綁定關(guān)系;所述至少一個(gè)應(yīng)用包括所述目 標(biāo)應(yīng)用,目標(biāo)虛擬端口是指服務(wù)器中供所述目標(biāo)應(yīng)用使用的虛擬端口,目標(biāo)物理端口是指 終端中所述目標(biāo)應(yīng)用期望使用的物理端口,所述目標(biāo)虛擬端口與所述目標(biāo)物理端口對(duì)應(yīng), 所述方法包括:
[0100] 401、服務(wù)器根據(jù)所述映射關(guān)系配置表中與所述目標(biāo)應(yīng)用對(duì)應(yīng)的端口綁定關(guān)系所 記錄的虛擬端口標(biāo)識(shí),創(chuàng)建所述目標(biāo)虛擬端口;
[0101] 本實(shí)施例中,所述端口可以為串口或并口。所述端口可以包括虛擬端口,例如包括 目標(biāo)虛擬端口;所述端口還可以包括物理端口,例如包括目標(biāo)物理端口。
[0102] 所述映射關(guān)系配置表中包括至少一個(gè)端口綁定關(guān)系。每個(gè)端口綁定關(guān)系都記錄有 虛擬端口標(biāo)識(shí);服務(wù)器可以使用端口綁定關(guān)系所記錄的虛擬端口標(biāo)識(shí)創(chuàng)建虛擬端口,例如 使用與目標(biāo)應(yīng)用對(duì)應(yīng)的虛擬端口標(biāo)識(shí)創(chuàng)建目標(biāo)虛擬端口。
[0103] 在遠(yuǎn)程虛擬桌面系統(tǒng)的服務(wù)器中,配置了各種類型的端口驅(qū)動(dòng),例如串口驅(qū)動(dòng),并 口驅(qū)動(dòng)等,在創(chuàng)建對(duì)應(yīng)的目標(biāo)虛擬端口后,根據(jù)所述服務(wù)器中預(yù)置的端口驅(qū)動(dòng)加載所述目 標(biāo)虛擬端口對(duì)應(yīng)的端口驅(qū)動(dòng),實(shí)現(xiàn)目標(biāo)虛擬端口處于可使用狀態(tài),例如,創(chuàng)建了目標(biāo)虛擬串 口后,根據(jù)所述服務(wù)器中預(yù)置的串口驅(qū)動(dòng)加載所述目標(biāo)虛擬串口對(duì)應(yīng)的串口驅(qū)動(dòng)。
[0104] 402、服務(wù)器根據(jù)所述映射關(guān)系配置表生成映射關(guān)系表;
[0105] 其中,所述映射關(guān)系表包括所述映射關(guān)系配置表中與所述目標(biāo)虛擬端口對(duì)應(yīng)的端 口綁定關(guān)系。
[0106] 本申請(qǐng)實(shí)施例中映射關(guān)系配置表包括至少一個(gè)端口綁定關(guān)系,每個(gè)所述端口綁定 關(guān)系記錄一個(gè)虛擬端口標(biāo)識(shí)與一個(gè)物理端口標(biāo)識(shí)的綁定關(guān)系,具體的,可以包括配置格式 信息和至少一個(gè)端口綁定關(guān)系,以端口為串口為例,映射關(guān)系配置表可以包括如下表1-1 (配置格式信息)和表1 -2 (端口綁定關(guān)系):
[0107] 表1-1
[0109]表1-2
[0111] 根據(jù)映射關(guān)系配置表生成的映射關(guān)系表可以如下表2所示;
[0112] 表2
[0114]其中,false代表關(guān)閉狀態(tài),true代表打開(kāi)狀態(tài)。
[0115] 403、服務(wù)器在預(yù)設(shè)條件滿足時(shí),若所述目標(biāo)虛擬端口被所述目標(biāo)應(yīng)用打開(kāi),根據(jù) 所述映射關(guān)系表通知所述終端開(kāi)啟與所述目標(biāo)虛擬端口對(duì)應(yīng)的目標(biāo)物理端口。
[0116]本申請(qǐng)?jiān)谒龇?wù)器中應(yīng)用打開(kāi)端口之前,提前創(chuàng)建虛擬端口,避免了服務(wù)器內(nèi) 應(yīng)用先于端口重定向正常工作之前就打開(kāi)端口,導(dǎo)致后續(xù)工作不正常問(wèn)題。
[0117]同時(shí),本申請(qǐng)實(shí)施例中不需要第三方部件(如USB轉(zhuǎn)串口線)來(lái)實(shí)現(xiàn)端口重定向,提 高了端口設(shè)備的易用性和整體可靠性。
[0118] 可選的,所述服務(wù)器根據(jù)所述映射關(guān)系配置表生成映射關(guān)系表,具體可以包括:
[0119] 在所述終端登錄所述服務(wù)器時(shí),所述服務(wù)器從所述終端獲取所述終端的至少一個(gè) 物理端口的物理端口標(biāo)識(shí),獲取到的物理端口標(biāo)識(shí)包括第一物理端口標(biāo)識(shí),所述第一物理 端口標(biāo)識(shí)是指在獲取到的物理端口標(biāo)識(shí)中所述映射關(guān)系配置表記錄有的物理端口標(biāo)識(shí),其 中,所述目標(biāo)物理端口具有所述第一物理端口標(biāo)識(shí);
[0120] 所述服務(wù)器根據(jù)所述映射關(guān)系配置表,將所有第一物理端口標(biāo)識(shí)所各自對(duì)應(yīng)的端 口綁定關(guān)系添入所述映射關(guān)系表。
[0121]本實(shí)施例中,所述服務(wù)器從所述終端獲取所述終端的至少一個(gè)物理端口的物理端 口標(biāo)識(shí)可以是如下兩種方式之一 :(1)所述服務(wù)器向所述終端發(fā)送用于查詢所述終端端口 的查詢信息,以使得所述終端查詢自身的物理端口標(biāo)識(shí)得到所述至少一個(gè)物理端口的物理 端口標(biāo)識(shí),并返回給所述服務(wù)器,所述服務(wù)器接收所述終端返回的所述至少一個(gè)物理端口 的物理端口標(biāo)識(shí);(2)所述終端將自身的至少一個(gè)物理端口的物理端口標(biāo)識(shí)向所述服務(wù)器 發(fā)送,所述服務(wù)器接收所述終端返回的所述至少一個(gè)物理端口的物理端口標(biāo)識(shí),此處不作 具體限定。
[0122]可選地,所述終端將所述至少一個(gè)物理端口的物理端口標(biāo)識(shí)添加入物理端口標(biāo)識(shí) 列表,向服務(wù)器發(fā)送物理端口標(biāo)識(shí)列表。本實(shí)施例中,所述物理端口標(biāo)識(shí)列表包括包括第一 物理端口標(biāo)識(shí),所述第一物理端口標(biāo)識(shí)可以是一個(gè)或多個(gè),并且所述第一物理端口標(biāo)識(shí)已 在所述映射關(guān)系配置表中記錄。
[0123]例如,假設(shè)服務(wù)器接收所述終端返回的物理端口標(biāo)識(shí)列表,該物理端口標(biāo)識(shí)列表 中包括第一物理端口標(biāo)識(shí):C0M1和COM2,此時(shí)所述服務(wù)器根據(jù)所述映射關(guān)系配置表(如上表 1-2 ),將所有第一物理端口標(biāo)識(shí)所各自對(duì)應(yīng)的端口綁定關(guān)系添入所述映射關(guān)系表,得到如 下表3所示:
[0124]表3
[0127] 在所述獲取到的物理端口標(biāo)識(shí)(即所述至少一個(gè)物理端口的物理端口標(biāo)識(shí))中包 括第二物理端口標(biāo)識(shí),所述第二物理端口標(biāo)識(shí)是指在獲取到的物理端口標(biāo)識(shí)中所述映射關(guān) 系配置表未記錄有的物理端口標(biāo)識(shí),即所述獲取到的物理端口標(biāo)識(shí)存在沒(méi)有對(duì)應(yīng)綁定關(guān)系 的物理端口時(shí),所述方法還可以包括:所述服務(wù)器創(chuàng)建所述第二物理端口標(biāo)識(shí)與預(yù)設(shè)虛擬 端口標(biāo)識(shí)的端口綁定關(guān)系,并將創(chuàng)建的端口綁定關(guān)系添入所述映射關(guān)系表。
[0128] 其中,預(yù)設(shè)虛擬端口可以是服務(wù)器根據(jù)映射關(guān)系配置表創(chuàng)建的虛擬端口中預(yù)留的 虛擬端口,也可以是預(yù)先新創(chuàng)建的虛擬端口。
[0129] 當(dāng)所述預(yù)設(shè)虛擬端口為根據(jù)第二物理端口標(biāo)識(shí)預(yù)先創(chuàng)建的新的虛擬端口時(shí),在所 述服務(wù)器創(chuàng)建所述第二物理端口標(biāo)識(shí)與預(yù)設(shè)虛擬端口標(biāo)識(shí)的端口綁定關(guān)系之前,所述方法 還可以包括:所述服務(wù)器創(chuàng)建所述第二物理端口標(biāo)識(shí)對(duì)應(yīng)的虛擬端口。
[0130]例如,以所述獲取到的物理端口標(biāo)識(shí)為物理端口標(biāo)識(shí)列表為例,在所述物理端口 標(biāo)識(shí)列表中存在所述映射關(guān)系配置表未記錄有的物理端口標(biāo)識(shí)時(shí),如在端口信息列表中包 括上述物理端口標(biāo)識(shí)⑶Ml、C0M2的基礎(chǔ)上,端口信息列表中還包括物理端口標(biāo)識(shí)⑶M 3、 COM4,由于上述映射關(guān)系配置表中沒(méi)有終端側(cè)的物理端口標(biāo)識(shí)C0M3、C0M4與服務(wù)器側(cè)的虛 擬端口的綁定關(guān)系,因此需要再創(chuàng)建或分配給物理端口COM 3、C0M4對(duì)應(yīng)的虛擬端口,創(chuàng)建 它們的綁定關(guān)系,并將創(chuàng)建的端口綁定關(guān)系添入所述映射關(guān)系表,具體可以如下表4所示。
[0131] 在所述物理端口標(biāo)識(shí)列表中存在所述映射關(guān)系配置表未記錄有的物理端口標(biāo)識(shí) 時(shí),還可以將服務(wù)器根據(jù)映射關(guān)系配置表創(chuàng)建的虛擬端口的標(biāo)識(shí)與第二物理端口標(biāo)識(shí)綁 定,而不用重新再創(chuàng)建新的虛擬端口,如上表3中,服務(wù)器側(cè)的虛擬端口標(biāo)識(shí)COM2未指定終 端側(cè)的物理端口,由于終端側(cè)的物理端口標(biāo)識(shí)COM3沒(méi)有直接的虛擬端口對(duì)應(yīng),則終端側(cè)的 物理端口標(biāo)識(shí)COM3優(yōu)先會(huì)從空閑的虛擬端口標(biāo)識(shí)去匹配綁定,此處會(huì)匹配上虛擬端口標(biāo)識(shí) COM2,當(dāng)服務(wù)器側(cè)無(wú)空閑的虛擬端口標(biāo)識(shí)時(shí),才會(huì)去創(chuàng)建新的虛擬端口標(biāo)識(shí)給終端側(cè)的物 理端口標(biāo)識(shí)COM3匹配。
[0132] 表4
[0134] 當(dāng)終端與服務(wù)器斷開(kāi)連接后,服務(wù)器還可以刪除那些非提前創(chuàng)建的虛擬串口(如 上后續(xù)創(chuàng)建的創(chuàng)建COM 3、C0M4對(duì)應(yīng)的虛擬端口),還原映射關(guān)系表到初始狀態(tài)。
[0135] 本申請(qǐng)實(shí)施例中,所述預(yù)設(shè)條件滿足可以是指所述服務(wù)器預(yù)置的端口自動(dòng)連接開(kāi) 關(guān)處于關(guān)閉狀態(tài),即在服務(wù)器中預(yù)置的端口自動(dòng)連接開(kāi)關(guān),在端口自動(dòng)連接開(kāi)關(guān)處于關(guān)閉 狀態(tài)時(shí),若所述目標(biāo)虛擬端口被所述目標(biāo)應(yīng)用打開(kāi),才根據(jù)所述映射關(guān)系表通知所述終端 開(kāi)啟與所述目標(biāo)虛擬端口對(duì)應(yīng)的目標(biāo)物理端口。
[0136] 在服務(wù)器中預(yù)置的端口自動(dòng)連接開(kāi)關(guān)的情況下,可選的,所述預(yù)設(shè)條件不滿足可 以是指所述服務(wù)器預(yù)置的端口自動(dòng)連接開(kāi)關(guān)處于打開(kāi)狀態(tài),此時(shí),所述方法還可以包括:所 述服務(wù)器通知所述終端開(kāi)啟所述映射關(guān)系表中每條端口綁定關(guān)系記錄的物理端口標(biāo)識(shí)所 指定的物理端口,即通知終端開(kāi)啟所述映射關(guān)系表中所有的有綁定關(guān)系記錄的物理端口標(biāo) 識(shí)所指定的物理端口,此種情況適用于端口使用率比較高的場(chǎng)景,此種場(chǎng)景下不需要在目 標(biāo)虛擬端口被所述目標(biāo)應(yīng)用打開(kāi)才去打開(kāi)對(duì)應(yīng)的物理端口,提高了效率。
[0137] 可選的,本申請(qǐng)實(shí)施例中,所述根據(jù)所述映射關(guān)系表通知所述終端開(kāi)啟與所述目 標(biāo)虛擬端口對(duì)應(yīng)的目標(biāo)物理端口,具體可以包括:
[0138] 所述服務(wù)器在獲取到所述目標(biāo)應(yīng)用待寫入所述目標(biāo)物理端口的數(shù)據(jù)時(shí),查詢所述 映射關(guān)系表中所述目標(biāo)物理端口的狀態(tài),若查詢到所述目標(biāo)物理端口的狀態(tài)為關(guān)閉狀態(tài), 則通知所述終端打開(kāi)所述目標(biāo)物理端口。
[0139] 即在應(yīng)用有待寫入所述目標(biāo)物理端口的數(shù)據(jù)時(shí),才去開(kāi)啟對(duì)應(yīng)的目標(biāo)物理端口, 避免了資源的浪費(fèi)。
[0140] 可選的,所述服務(wù)器在獲知所述終端打開(kāi)所述目標(biāo)物理端口時(shí),向所述目標(biāo)虛擬 端口發(fā)送待寫的數(shù)據(jù),經(jīng)所述目標(biāo)虛擬端口向所述目標(biāo)物理端口轉(zhuǎn)發(fā)待寫的數(shù)據(jù)。
[0141 ]可選的,所述服務(wù)器在獲知所述終端打開(kāi)所述目標(biāo)物理端口時(shí),更新所述映射關(guān) 系表中所述目標(biāo)物理端口的狀態(tài)為打開(kāi)狀態(tài),實(shí)現(xiàn)了映射關(guān)系表的自動(dòng)動(dòng)態(tài)管理,提尚了 易用性。<