賈 堂 曹 健,2* 官 玫 張 興,2
1(北京大學(xué)軟件與微電子學(xué)院 北京100871)2(北京大學(xué)信息科學(xué)技術(shù)學(xué)院 北京100871)
?
基于Android的虛擬桌面USB設(shè)備重映像系統(tǒng)的設(shè)計(jì)
賈堂1曹健1,2*官玫1張興1,2
1(北京大學(xué)軟件與微電子學(xué)院北京100871)2(北京大學(xué)信息科學(xué)技術(shù)學(xué)院北京100871)
虛擬桌面是基于服務(wù)器的計(jì)算模型,可提高計(jì)算機(jī)的資源管理效率?,F(xiàn)有的虛擬桌面對(duì)USB設(shè)備支持不足,無(wú)法實(shí)現(xiàn)USB設(shè)備的桌面虛擬化。針對(duì)這一問(wèn)題,在基于Android的虛擬桌面上設(shè)計(jì)USB設(shè)備重映像系統(tǒng),實(shí)現(xiàn)通過(guò)虛擬桌面對(duì)USB設(shè)備的操控。該系統(tǒng)通過(guò)NDK構(gòu)建USB設(shè)備監(jiān)聽(tīng)模塊和控制模塊,利用Socket在進(jìn)程間傳遞USB設(shè)備信息,利用基于TCP/IP協(xié)議的消息框架與服務(wù)器進(jìn)行數(shù)據(jù)傳輸。實(shí)驗(yàn)結(jié)果表明,在Android虛擬桌面上對(duì)重映像的USB設(shè)備進(jìn)行讀寫(xiě)操作,其傳輸速率與本地USB的傳輸速率相當(dāng)。
虛擬桌面AndroidUSB設(shè)備重映像
虛擬桌面是一種基于服務(wù)器的計(jì)算模型,它通過(guò)虛擬化技術(shù)將服務(wù)器上的資源以桌面系統(tǒng)的形式映射到移動(dòng)設(shè)備、個(gè)人計(jì)算機(jī)、瘦客戶(hù)機(jī)等終端設(shè)備。虛擬桌面運(yùn)行于云計(jì)算數(shù)據(jù)中心,將終端設(shè)備與桌面環(huán)境解耦合[1]。用戶(hù)可通過(guò)終端設(shè)備登錄虛擬桌面,訪問(wèn)服務(wù)器資源。
虛擬桌面通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)終端設(shè)備間的協(xié)同辦公,具有易管控、低成本、高安全性等優(yōu)點(diǎn)[2],已被廣泛應(yīng)用于大型企業(yè)的遠(yuǎn)程辦公系統(tǒng)。然而,現(xiàn)有的虛擬桌面僅支持鼠標(biāo)、鍵盤(pán)等USB設(shè)備,無(wú)法滿足用戶(hù)對(duì)USB存儲(chǔ)設(shè)備、USB多媒體設(shè)備的操控需求。為解決這一問(wèn)題,在Android平臺(tái)上實(shí)現(xiàn)了USB設(shè)備重映像系統(tǒng),使用戶(hù)能夠在虛擬桌面上對(duì)接入終端的USB設(shè)備進(jìn)行讀寫(xiě)操作,實(shí)現(xiàn)了U盤(pán)、硬盤(pán)、USB攝像頭、智能卡讀卡器等USB設(shè)備的桌面虛擬化。
1.1桌面虛擬化技術(shù)
桌面虛擬化技術(shù)基于服務(wù)器虛擬化技術(shù),它對(duì)計(jì)算機(jī)資源進(jìn)行整合和抽象,向終端用戶(hù)及應(yīng)用程序隱去計(jì)算資源的物理特性和硬件實(shí)現(xiàn)細(xì)節(jié),實(shí)現(xiàn)了桌面系統(tǒng)的遠(yuǎn)程動(dòng)態(tài)訪問(wèn)與數(shù)據(jù)中心的統(tǒng)一托管。桌面虛擬化技術(shù)的架構(gòu)分為四層:資源池層、桌面管理層、網(wǎng)絡(luò)接入層和終端接入層,分別負(fù)責(zé)計(jì)算資源的部署、桌面系統(tǒng)的調(diào)度、網(wǎng)絡(luò)的連接以及終端設(shè)備的接入。
1.2USB設(shè)備重映像技術(shù)
USB設(shè)備重映像技術(shù)是指運(yùn)行在終端上的虛擬桌面可識(shí)別并操控與該終端連接的USB設(shè)備。系統(tǒng)將USB設(shè)備描述符信息通過(guò)TCP/IP協(xié)議發(fā)送至服務(wù)器虛擬機(jī)端,從而將USB設(shè)備的使用權(quán)交由虛擬桌面。同時(shí)將終端設(shè)置為USB代理,負(fù)責(zé)處理用戶(hù)在虛擬桌面上對(duì)USB設(shè)備的操控請(qǐng)求。Android平臺(tái)虛擬桌面上的USB設(shè)備重映像技術(shù)涉及Android NDK開(kāi)發(fā)、虛擬桌面專(zhuān)用協(xié)議PCoIP、JNI接口設(shè)計(jì)以及Unix進(jìn)程間的通信。
2.1開(kāi)發(fā)環(huán)境及功能概述
系統(tǒng)采用Android Studio為開(kāi)發(fā)平臺(tái),以Java語(yǔ)言為Android應(yīng)用層開(kāi)發(fā)語(yǔ)言,以C++語(yǔ)言為Android Native層開(kāi)發(fā)語(yǔ)言,利用NDK構(gòu)建Android Native層核心功能模塊,以Junit為系統(tǒng)測(cè)試框架[3]。
系統(tǒng)運(yùn)行過(guò)程中可實(shí)時(shí)獲取連接Android終端的USB設(shè)備信息,并更新用戶(hù)操作界面,顯示已連接的USB設(shè)備,為用戶(hù)提供操作菜單。系統(tǒng)響應(yīng)USB設(shè)備重映像操作后可將USB設(shè)備信息通過(guò)消息傳遞框架通知服務(wù)器,將連接Android終端的USB設(shè)備的使用權(quán)交由虛擬桌面。
2.2架構(gòu)設(shè)計(jì)
虛擬桌面USB設(shè)備重映像系統(tǒng)由用戶(hù)操作界面、設(shè)備監(jiān)聽(tīng)模塊、消息控制模塊、虛擬桌面和服務(wù)器五部分組成,如圖1所示。
圖1 系統(tǒng)整體架構(gòu)
系統(tǒng)分為應(yīng)用層、JNI接口層和Native層(本地層)。其中應(yīng)用層運(yùn)行虛擬桌面,提供與用戶(hù)交互的界面。接口層提供JNI接口,負(fù)責(zé)應(yīng)用層Java程序和Native層C++動(dòng)態(tài)鏈接庫(kù)的互相調(diào)用。監(jiān)聽(tīng)模塊和控制模塊位于Native層,監(jiān)聽(tīng)模塊接收并處理應(yīng)用層USB設(shè)備狀態(tài)廣播,獲取USB設(shè)備信息,響應(yīng)用戶(hù)的USB操作請(qǐng)求;控制模塊調(diào)用USB函數(shù)庫(kù),接收監(jiān)聽(tīng)模塊傳遞的USB描述符信息,負(fù)責(zé)系統(tǒng)運(yùn)行中線程之間的消息傳遞。消息傳遞框架基于TCP/IP協(xié)議[4],負(fù)責(zé)控制模塊與服務(wù)器的數(shù)據(jù)及請(qǐng)求傳遞。服務(wù)器為虛擬桌面提供運(yùn)行環(huán)境,與應(yīng)用層通過(guò)PCoIP協(xié)議進(jìn)行通信[5]。
2.3功能設(shè)計(jì)
(1) 交互設(shè)計(jì)
系統(tǒng)為用戶(hù)呈現(xiàn)接入終端的USB設(shè)備,實(shí)時(shí)響應(yīng)用戶(hù)操作,系統(tǒng)與用戶(hù)的交互如圖2所示。
圖2 系統(tǒng)與用戶(hù)交互
圖3 系統(tǒng)工作流程
四個(gè)交互對(duì)象分別是用戶(hù)、UI線程、監(jiān)聽(tīng)進(jìn)程和虛擬桌面。UI線程負(fù)責(zé)響應(yīng)用戶(hù)的請(qǐng)求事件,監(jiān)聽(tīng)進(jìn)程獲取USB設(shè)備信息并反饋給UI線程,UI線程更新設(shè)備緩存并將USB設(shè)備以圖標(biāo)形式呈現(xiàn)給用戶(hù)。響應(yīng)用戶(hù)對(duì)USB設(shè)備的重映像請(qǐng)求后,UI線程向服務(wù)器發(fā)起連接請(qǐng)求,經(jīng)過(guò)握手操作,服務(wù)器會(huì)識(shí)別該USB設(shè)備,用戶(hù)可在虛擬桌面上操控USB設(shè)備。系統(tǒng)工作流程如圖3所示。
(2) 監(jiān)聽(tīng)功能
為保障系統(tǒng)準(zhǔn)確獲取USB設(shè)備狀態(tài),監(jiān)聽(tīng)模塊應(yīng)包含監(jiān)聽(tīng)USB設(shè)備狀態(tài)、獲取USB設(shè)備信息、過(guò)濾與系統(tǒng)不兼容的設(shè)備、提供應(yīng)用層接口、與UI線程通信等功能。具體而言,監(jiān)聽(tīng)模塊監(jiān)聽(tīng)USB設(shè)備狀態(tài),獲取能與系統(tǒng)兼容的USB設(shè)備的描述符。USB設(shè)備描述符記錄了設(shè)備序列號(hào)、設(shè)備適用的協(xié)議類(lèi)型、設(shè)備商和產(chǎn)品編號(hào)等信息。監(jiān)聽(tīng)模塊以動(dòng)態(tài)鏈接庫(kù)的形式存在于Android Native層,提供與Android應(yīng)用層交互的接口。監(jiān)聽(tīng)模塊可通過(guò)進(jìn)程間通信的方式,將獲取的USB設(shè)備信息傳遞給UI線程,更新設(shè)備列表。監(jiān)聽(tīng)模塊功能如圖4所示。
圖4 監(jiān)聽(tīng)模塊功能
圖5 監(jiān)聽(tīng)模塊工作流程
監(jiān)聽(tīng)模塊的工作流程如圖5所示。
(3) 控制模塊設(shè)計(jì)
系統(tǒng)控制模塊完成USB設(shè)備信息接收、更新設(shè)備緩存觸發(fā)UI重繪、線程間消息處理、與應(yīng)用層交互、處理連接請(qǐng)求等操作。具體而言,控制模塊接收監(jiān)聽(tīng)模塊傳遞的USB設(shè)備信息,更新設(shè)備緩存,保持與Android終端接入的USB設(shè)備同步,通過(guò)回調(diào)函數(shù)結(jié)合Android消息處理機(jī)制更新UI。控制模塊與安卓應(yīng)用層的交互包括模塊的加載和停用、與應(yīng)用層消息格式匹配等操作。同時(shí),控制模塊負(fù)責(zé)處理與服務(wù)器的連接請(qǐng)求[6]??刂颇K功能如圖6所示。
圖6 控制模塊功能
控制模塊工作流程如圖7所示。
圖7 控制模塊工作流程
(4) JNI接口設(shè)計(jì)
系統(tǒng)應(yīng)用層Java程序和Native層C++程序無(wú)法直接互相調(diào)用,JNI接口用于實(shí)現(xiàn)Android應(yīng)用程序和Native動(dòng)態(tài)鏈接庫(kù)的函數(shù)調(diào)用。系統(tǒng)主要JNI接口包括:加載USB設(shè)備監(jiān)聽(tīng)模塊和控制模塊、監(jiān)聽(tīng)模塊處理USB設(shè)備狀態(tài)廣播、監(jiān)聽(tīng)模塊響應(yīng)USB設(shè)備操作的請(qǐng)求等。
(5) 通信設(shè)計(jì)
系統(tǒng)模塊之間的通信包括:
應(yīng)用層和監(jiān)聽(tīng)模塊的通信,通過(guò)JNI接口實(shí)現(xiàn),主要包括監(jiān)聽(tīng)模塊的啟動(dòng)與信息的交互、USB設(shè)備的操作。
應(yīng)用層和控制模塊的通信,包括更新UI、連接虛擬機(jī)。
監(jiān)聽(tīng)模塊和控制模塊的通信,利用Socket本地套接字,綁定Android系統(tǒng)內(nèi)部存儲(chǔ)作為監(jiān)聽(tīng)模塊和控制模塊通信的管道。
虛擬桌面與服務(wù)器之間的圖像、聲音傳遞,利用PCoIP協(xié)議(基于UDP協(xié)議)實(shí)現(xiàn)。
控制模塊與服務(wù)器傳遞URB及USB數(shù)據(jù)包,利用基于TCP/IP協(xié)議的消息傳遞框架實(shí)現(xiàn)。
3.1監(jiān)聽(tīng)模塊功能實(shí)現(xiàn)
監(jiān)聽(tīng)模塊在Android后臺(tái)運(yùn)行,交互界面設(shè)置監(jiān)聽(tīng)模塊啟動(dòng)框,當(dāng)框內(nèi)狀態(tài)改變時(shí),系統(tǒng)進(jìn)行判斷,若為選中狀態(tài),則調(diào)用創(chuàng)建監(jiān)聽(tīng)進(jìn)程的函數(shù)。若取消選擇,則調(diào)用終止監(jiān)聽(tīng)服務(wù)的函數(shù)。Android 3.1版本開(kāi)始支持USB HOST模式,可以實(shí)現(xiàn)利用Android廣播機(jī)制獲取USB設(shè)備狀態(tài)信息[7]。系統(tǒng)創(chuàng)建廣播接收對(duì)象,響應(yīng)USB設(shè)備狀態(tài)廣播消息,具體過(guò)程如圖8所示。
圖8 處理USB狀態(tài)廣播消息
監(jiān)聽(tīng)模塊注冊(cè)廣播接收器,接收來(lái)自系統(tǒng)關(guān)于USB設(shè)備狀態(tài)的廣播,設(shè)置事件過(guò)濾。
監(jiān)聽(tīng)模塊響應(yīng)事件廣播,重寫(xiě)響應(yīng)函數(shù):查詢(xún)SQLite數(shù)據(jù)庫(kù),若USB設(shè)備型號(hào)存在于數(shù)據(jù)庫(kù)中,表明該設(shè)備與重映像系統(tǒng)兼容,監(jiān)聽(tīng)模塊會(huì)獲取并傳遞該USB設(shè)備信息,其偽碼如下:
Loop:
Step NONE_DEVICE_DETECTED:
Jump to Loop
Step USB_DEVICE_ATTACHED:
Get Device Information
if device in database:
Transfer Device Descriptor
else:break
Step USB_DEVICE_DETACHED:
Jump to Loop
3.2控制模塊功能實(shí)現(xiàn)
控制模塊的關(guān)鍵功能為處理多線程和異步消息。在Native線程中控制模塊通過(guò)Socket套接字獲取來(lái)自監(jiān)聽(tīng)模塊的消息后,會(huì)回調(diào)應(yīng)用層Java函數(shù),發(fā)送增加設(shè)備的消息通知UI線程,更新UI。
控制模塊利用Handler類(lèi)實(shí)現(xiàn)消息的獲取和發(fā)送,Handler將相應(yīng)的方法放入其所在線程中執(zhí)行。系統(tǒng)創(chuàng)建新線程時(shí)生成一個(gè)消息隊(duì)列(MessageQueue),作為裝載線程間消息的容器,同時(shí)生成一個(gè)循環(huán)Looper,用于管理消息隊(duì)列。Looper負(fù)責(zé)阻塞讀取隊(duì)列中的消息,將消息逐個(gè)發(fā)送至對(duì)應(yīng)的Handler完成響應(yīng)[8]。消息處理過(guò)程如圖9所示。
圖9 控制模塊消息處理
系統(tǒng)的消息存放于全局消息池Message Pool中,消息池中的首個(gè)消息直接通過(guò)new()方法生成,其他消息通過(guò)Recycle()回收函數(shù)回收至消息池中[9]。
3.3JNI接口
JNI使得在Java虛擬機(jī)(JVM)內(nèi)部運(yùn)行的Java代碼能夠與用其他編程語(yǔ)言(C、C++和匯編語(yǔ)言)實(shí)現(xiàn)的庫(kù)和應(yīng)用程序進(jìn)行交互[10]。系統(tǒng)通過(guò)JNI函數(shù)實(shí)現(xiàn)Android應(yīng)用層和Android Native層的函數(shù)調(diào)用。
應(yīng)用層的Java程序調(diào)用Native層程序時(shí),JVM會(huì)向Native層傳遞兩個(gè)指針,分別為JNIEnv類(lèi)型和jobject類(lèi)型,形式如下:
JNIEXPORT void JNICALL Java_ClassName_MethodName
(JNIEnv *env,jobject obj)
{
/*Native層函數(shù)具體實(shí)現(xiàn)*/
}
JNIEnv類(lèi)型的指針包含JVM的接口,通過(guò)該指針可以對(duì)Java程序進(jìn)行操作,如創(chuàng)建Java類(lèi)對(duì)象、獲取對(duì)象屬性、調(diào)用對(duì)象的方法等。jobject obj參數(shù)為聲明Native層函數(shù)的Java對(duì)象的引用。
Native層程序調(diào)用應(yīng)用層Java程序時(shí),首先獲取Java類(lèi)和類(lèi)對(duì)象的屬性和方法。JNI定義jfieldID、jmethodID類(lèi)分別表示應(yīng)用層Java類(lèi)對(duì)象的屬性和方法。JNI函數(shù)通過(guò)ID識(shí)別不同的域和方法[11]。表1列出Native層程序調(diào)用應(yīng)用層程序的關(guān)鍵方法。
表1 Native層程序調(diào)用應(yīng)用層程序的關(guān)鍵方法
監(jiān)聽(tīng)模塊檢測(cè)到USB設(shè)備接入時(shí),會(huì)發(fā)送增加設(shè)備的消息,控制模塊響應(yīng)該消息,在UI線程中回調(diào)相應(yīng)的增加設(shè)備函數(shù),UI線程將需要回調(diào)的函數(shù)ID都放入同一個(gè)結(jié)構(gòu)體中統(tǒng)一命名,并在初始化函數(shù)設(shè)置相應(yīng)的環(huán)境變量[12]。
3.4進(jìn)程間通信
監(jiān)聽(tīng)模塊和控制模塊運(yùn)行于不同進(jìn)程中,系統(tǒng)利用Socket實(shí)現(xiàn)USB設(shè)備信息在不同進(jìn)程間的傳遞。
Socket可用于網(wǎng)絡(luò)中計(jì)算機(jī)之間的通信,也可以用于本地不同進(jìn)程之間的通信。Socket提供了多種套接字類(lèi)型,系統(tǒng)采用AF_UNIX本地套接字來(lái)實(shí)現(xiàn)監(jiān)聽(tīng)模塊和控制模塊之間的通信[13]。具體實(shí)現(xiàn)過(guò)程如圖10所示。
圖10 監(jiān)聽(tīng)模塊和控制模塊通信
系統(tǒng)的監(jiān)聽(tīng)模塊作為通信Server端,首先調(diào)用Socket()函數(shù)創(chuàng)建AF_UNIX類(lèi)型的套接字,并在Android系統(tǒng)內(nèi)部存儲(chǔ)中創(chuàng)建文件。通過(guò)調(diào)用Bind()函數(shù)綁定該文件的絕對(duì)路徑:/data/data/filename,綁定成功后監(jiān)聽(tīng)模塊可對(duì)Client端的連接請(qǐng)求進(jìn)行阻塞監(jiān)聽(tīng)。
控制模塊作為通信Client端,首先創(chuàng)建本地套接字,向Server端監(jiān)聽(tīng)模塊發(fā)起連接請(qǐng)求。監(jiān)聽(tīng)模塊通過(guò)與控制模塊進(jìn)行握手響應(yīng)連接請(qǐng)求,連接成功后監(jiān)聽(tīng)模塊和控制模塊可進(jìn)行通信,直至其中一方調(diào)用Close()操作[14]。
4.1功能測(cè)試
測(cè)試采用Nexus 5手機(jī)運(yùn)行虛擬桌面Horizon View 5.0[15],Android系統(tǒng)版本為4.4,USB設(shè)備為HP USB2.0存儲(chǔ)設(shè)備,容量為16 GB。測(cè)試地點(diǎn)網(wǎng)絡(luò)信號(hào)良好,無(wú)明顯干擾。
登錄虛擬桌面后啟動(dòng)USB設(shè)備重映像主界面(USB Redirection),界面Arbitrator Devices一欄顯示接入Android終端的USB設(shè)備,如圖11所示。
圖11 系統(tǒng)運(yùn)行結(jié)果
用戶(hù)可選擇USB設(shè)備進(jìn)行重映像,虛擬桌面識(shí)別到設(shè)備后用戶(hù)即可對(duì)該USB設(shè)備進(jìn)行讀寫(xiě)操作,如圖12所示。
圖12 虛擬桌面識(shí)別重映像的USB設(shè)備
4.2傳輸速率測(cè)試
分別在Android平臺(tái)上的虛擬桌面、Android手機(jī)和個(gè)人計(jì)算機(jī)上傳輸相同的文件(虛擬桌面和PC均運(yùn)行Windows 7 64位操作系統(tǒng),Android系統(tǒng)為4.4),測(cè)試10次后取傳輸速率(單位MB/s)的平均值,如圖13所示。
圖13 傳輸速率比較
測(cè)試結(jié)果顯示,在Android虛擬桌面上對(duì)重映像的USB設(shè)備進(jìn)行讀寫(xiě)操作,其讀寫(xiě)速率達(dá)到手機(jī)讀寫(xiě)USB設(shè)備速率的97%,PC讀寫(xiě)USB設(shè)備速率的95%。
本文針對(duì)現(xiàn)有虛擬桌面無(wú)法對(duì)USB設(shè)備進(jìn)行桌面虛擬化的問(wèn)題,在Android平臺(tái)上設(shè)計(jì)了虛擬桌面USB設(shè)備重映像系統(tǒng),實(shí)現(xiàn)了用戶(hù)在Android虛擬桌面上對(duì)USB設(shè)備的操控。本文分析了USB設(shè)備重映像系統(tǒng)的功能,對(duì)系統(tǒng)進(jìn)行架構(gòu)設(shè)計(jì)和模塊劃分。重點(diǎn)分析了USB設(shè)備的狀態(tài)監(jiān)聽(tīng)和描述符信息的獲取、傳輸。經(jīng)過(guò)測(cè)試分析,用戶(hù)通過(guò)該系統(tǒng)在Android虛擬桌面上對(duì)重映像的USB設(shè)備進(jìn)行讀寫(xiě)操作,其速率達(dá)到手機(jī)和PC讀寫(xiě)速率的95%以上,與本地USB傳輸速率相當(dāng)。實(shí)驗(yàn)顯示,USB設(shè)備重映像系統(tǒng)運(yùn)行穩(wěn)定,可以應(yīng)用于大型企業(yè)的虛擬化辦公系統(tǒng),為用戶(hù)遠(yuǎn)程操控USB設(shè)備帶來(lái)方便。
目前USB設(shè)備重映像功能是作為獨(dú)立的輕量級(jí)Android應(yīng)用而存在,用戶(hù)需手動(dòng)加載功能模塊。如何將USB設(shè)備重映像功能融合到虛擬桌面應(yīng)用中,從而使系統(tǒng)可以自動(dòng)加載設(shè)備監(jiān)聽(tīng)、控制模塊,是本文未來(lái)的改進(jìn)方向。
[1] Matthew Portnoy.Virtualization Essentials[M].USA:Sybex,2012:7-15.
[2] 丁順,李明祿,翁楚良,等.一種基于虛擬機(jī)的安全監(jiān)測(cè)方法[J].計(jì)算機(jī)應(yīng)用與軟件,2012,29(6):51-56.
[3] Do H,Rothermel G,Kinneer A.Prioritizing JUnit Test Cases:An Empirical Assessment and Cost-Benefits Analysis[J].Empirical Software Engineering,2006,11(1):33-70.
[4] Degermark M,Engan M,Nordgren B,et al.Low-loss TCP/IP header compression for wireless networks[J].Wireless Networks,1997,3(5):375-387.
[5] Calyam P,Patali R,Berryman A,et al.Utility-directed resource allocation in virtual desktop clouds[J].Computer Networks,2011,55(18):4112-4130.
[6] Zhou Y M,Guo H H.A Research of USB Device Redirection Mechanism over IP network in Desktop Cloud System[C]//Proceedings of the Advances in Intelligent Systems Research,2012.
[7] 張智.USB3.0 Host Model設(shè)計(jì)與實(shí)現(xiàn)[D].北京大學(xué),2011.
[8] Jun L,Hua-jun W.The Analyzing of Android Handler Misleading Usage and Avoiding It[J].Software,2013,34(3):147-148.
[9] Fang C W,Xie W B.Android-based Message Encryption Implementation[J] .Communications Technology,2012,45(6):14-16,20.
[10] 黃玉坤,陳榕,裴喜龍,等.基于跨語(yǔ)言對(duì)象遷移策略的復(fù)合本地對(duì)象模型[J].計(jì)算機(jī)研究與發(fā)展,2015,52(1):141-155.
[11] Lee Y H,Chandrian P,Li B.Efficient Java Native Interface for Android Based Mobile Devices[C]//Proceedings of 2011 IEEE 10th International Conference on Trust, Security and Privacy in Computing and Communications.IEEE,2011:1202-1209.
[12] Shabtai A,Kanonov U,Elovici Y,et al.“Andromaly”:a behavioral malware detection framework for android devices[J].Journal of Intelligent Information Systems,2012,38(1):161-190.
[13] Stevens W R,Rago S A.Advanced Programming in the UNIX Environment[M].3rd ed.Addison-Wesley Professional,2013.
[14] 黎源,王會(huì)進(jìn).Linux下面向?qū)ο蟮腟ocket程序設(shè)計(jì)研究[J].計(jì)算機(jī)應(yīng)用與軟件,2010,27(12):27-28,36.
[15] Jason Langone, Andre Leibovici.VMware View 5 Desktop Virtualization Solutions[M].Packt Publishing,2012 :16-18.
DESIGN OF USB REDIRECTION SYSTEM FOR VIRTUAL DESKTOP BASED ON ANDROID
Jia Tang1Cao Jian1,2*Guan Mei1Zhang Xing1,2
1(School of Software and Microelectronics,Peking University,Beijing 100871,China)2(SchoolofElectronicsEngineeringandComputerScience,PekingUniversity,Beijing100871,China)
Virtual desktop is a server-based computing model and can improve the efficiency of resource management on computers.Existing virtual desktop cannot realise desktop virtualisation of USB devices due to insufficient USB device support.To tackle this problem,we designed the USB redirection system on Android-based virtual desktop,and implemented the operation of USB devices through virtual desktop.The system exploits NDK to construct USB device monitor module and control module,exploits Socket to transmit USB device information between processes,and exploits TCP/IP-based message framework to transmit data with server.Experimental results demonstrated that to make the read and write operation on redirected USB device on Android-based virtual desktop has the data transmission rate similar to the rate on local USB.
Virtual desktopAndroidUSB device redirection
2015-04-24。PKU-ITU合作項(xiàng)目。賈堂,碩士生,主研領(lǐng)域:桌面虛擬化技術(shù),軟硬件協(xié)同設(shè)計(jì)。曹健,講師。官玫,碩士生。張興,教授。
TP30
A
10.3969/j.issn.1000-386x.2016.09.058