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

一種硬件設備的訪問管理方法及系統(tǒng)的制作方法

文檔序號:10660826閱讀:294來源:國知局
一種硬件設備的訪問管理方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種硬件設備的訪問管理方法,包括:服務端在檢測到硬件設備接入預定的接口時,建立與所述硬件設備的連接,并創(chuàng)建監(jiān)聽線程;監(jiān)聽線程在監(jiān)聽到來自所述客戶端的連接請求,創(chuàng)建服務于所述連接請求的服務線程;服務線程接收來自客戶端發(fā)送的協議數據包,根據所述協議數據包調用相應的函數建立與所述接口的連接,并將所述函數的輸出參數進行序列化處理后返回給所述客戶端,以使所述客戶端對所述函數的輸出參數進行反序列化后寫入函數參數表后,并通過驅動返回給對應的上層應用;本發(fā)明還公開了一種硬件設備的訪問管理系統(tǒng),可使得上層應用可在非root權限的情況下,安全的與所述硬件設備建立連接。
【專利說明】
一種硬件設備的訪問管理方法及系統(tǒng)
技術領域
[0001]本發(fā)明涉及自助終端技術領域,尤其涉及一種硬件設備的訪問管理方法及系統(tǒng)。 【背景技術】
[0002]在Linux系統(tǒng)中,訪問硬件設備(主要有串口的設備和USB接口的設備)需要root權限,但上層應用的操作不需要root權限也可以進行正常業(yè)務流程,并且在Linux系統(tǒng)中不提倡使用root權限直接運行程序,更不提倡使用root登陸到桌面,這樣就會存在安全風險,導致系統(tǒng)不穩(wěn)定現象。在Android的環(huán)境(Android也是基于Linux內核的嵌入式小型系統(tǒng))中是不允許直接訪問硬件設備(主要有串口的設備和USB接口的設備),原因是因為Android系統(tǒng)會在啟動應用程序時會自動創(chuàng)建一個臨時用戶運行程序,并在經過裁剪后的C++環(huán)境下運行的,但與硬件設備建立通信必須要使用root權限,并且需要比較全面的Linux環(huán)境的函數集。
[0003]由上述可知,在Linux系統(tǒng)或Android系統(tǒng)中,若需要直接訪問硬件設備,貝lj需要使用root權限,但是使用root權限又可能存在安全風險和隱患,因而開發(fā)一套能夠對硬件設備的連接進行管理和授權的設備管理系統(tǒng)對Linux系統(tǒng)顯得尤為重要。
【發(fā)明內容】

[0004]針對上述問題,本發(fā)明的目的在于提供一種硬件設備的訪問管理方法及系統(tǒng),可使得所述上層應用可在非root權限的情況下,安全的與所述硬件設備建立連接。
[0005]本發(fā)明提供了一種硬件設備的訪問管理方法,包括如下步驟:
[0006]服務端在檢測到硬件設備接入預定的接口時,建立與所述硬件設備的連接,并創(chuàng)建監(jiān)聽線程,以監(jiān)聽來自客戶端的連接請求;其中,所述服務端以root權限啟動;
[0007]所述服務端的監(jiān)聽線程在監(jiān)聽到來自所述客戶端的連接請求,且對所述連接請求經過校驗后,創(chuàng)建服務于所述連接請求的服務線程;
[0008]所述服務端的服務線程接收來自所述客戶端發(fā)送的協議數據包,根據所述協議數據包調用相應的函數建立與所述接口的連接,并將所述函數的輸出參數進行序列化處理后返回給所述客戶端,以使所述客戶端對所述函數的輸出參數進行反序列化后寫入函數參數表后,并通過驅動返回給對應的上層應用。
[0009]優(yōu)選地,所述協議數據包由所述客戶端在接收到所述上層應用通過調用所述驅動訪問自身的通信接口后,對根據訪問產生的接口數據進行序列化處理,并對序列化處理生成的二進制數據流進行打包生成。
[0010]優(yōu)選地,在Linux系統(tǒng)環(huán)境下,所述服務端由Linux系統(tǒng)通過inetd守護進程以root 權限啟動;[0〇11 ] 在Android系統(tǒng)環(huán)境下,所述服務端以root權限在Android系統(tǒng)啟動的時自動啟動,其中,通過在Android系統(tǒng)的NDK層建立一個基于TCP/IP通信的客戶端的應用庫,然后在 Android的底層建立基于TCP/IP的一個通信服務來生成所述服務端。
[0012]優(yōu)選地,所述服務端的監(jiān)聽線程在監(jiān)聽到來自所述客戶端的連接請求,且對所述連接請求經過校驗后,創(chuàng)建服務于所述連接請求的服務線程,具體包括:[0〇13]監(jiān)聽來自客戶端的連接請求;
[0014]判斷是否有合法的連接請求,若有,則獲取所述連接請求中的數據包頭的信息定位數據包,讀取握手數據包;
[0015]檢查所述握手數據包是否合法,若合法,則創(chuàng)建服務于所述連接請求的服務線程, 并分配連接使用權給所述客戶端;若不合法,則拒絕所述客戶端的連接請求。
[0016]優(yōu)選地,所述服務端的服務線程接收來自所述客戶端發(fā)送的協議數據包,根據所述協議數據包調用相應的函數建立與所述接口的連接,并將所述函數的輸出參數進行序列化處理后返回給所述客戶端,具體包括:
[0017]接收所述客戶端發(fā)送的協議數據包;
[0018]對接收的所述協議數據包進行解析,將解析得到的協議數據進行反序列化,并創(chuàng)建相應的函數參數表;
[0019]識別所述協議數據中的命令ID,調用所述命令ID所對應的函數建立與所述接口的連接,并對所述函數的輸出參數進行序列化處理;
[0020]將序列化后的輸出參數發(fā)送給所述客戶端。
[0021]本發(fā)明還提供一種硬件設備的訪問管理方法,包括如下步驟:
[0022]服務端在檢測到硬件設備接入預定的接口時,建立與所述硬件設備的連接,并創(chuàng)建監(jiān)聽線程,以監(jiān)聽來自客戶端的連接請求;其中,所述服務端以root權限啟動;
[0023]所述客戶端向所述服務端發(fā)起連接請求;
[0024]所述服務端的監(jiān)聽線程在監(jiān)聽到來自所述客戶端的連接請求,且對所述連接請求經過校驗后,創(chuàng)建服務于所述連接請求的服務線程;
[0025]所述客戶端將協議數據包發(fā)送給所述服務端的服務線程;
[0026]所述服務端的服務線程根據所述協議數據包調用相應的函數建立與所述接口的連接,并將所述函數的輸出參數進行序列化處理后返回給所述客戶端;
[0027]所述客戶端對所述函數的輸出參數進行反序列化后寫入函數參數表后,并通過驅動返回給對應的上層應用。
[0028]優(yōu)選地,在所述客戶端將協議數據包發(fā)送給所述服務端的服務線程之前,還包括:
[0029]所述客戶端在接收到所述上層應用通過調用所述驅動訪問自身的通信接口后,對根據訪問產生的接口數據進行序列化處理,并對序列化處理生成的二進制數據流進行打包生成協議數據包。。
[0030]優(yōu)選地,所述服務端的監(jiān)聽線程在監(jiān)聽到來自所述客戶端的連接請求,且對所述連接請求經過校驗后,創(chuàng)建服務于所述連接請求的服務線程,具體包括:[0〇31]監(jiān)聽來自客戶端的連接請求;
[0032]判斷是否有合法的連接請求,若有,則獲取所述連接請求中的數據包頭的信息定位數據包,讀取握手數據包;
[0033]檢查所述握手數據包是否合法,若合法,則創(chuàng)建服務于所述連接請求的服務線程, 并分配連接使用權給所述客戶端;若不合法,則拒絕所述客戶端的連接請求。
[0034]優(yōu)選地,所述服務端的服務線程根據所述協議數據包調用相應的函數建立與所述接口的連接,并將所述函數的輸出參數進行序列化處理后返回給所述客戶端,具體包括:
[0035]解析所述協議數據包,將解析得到的協議數據進行反序列化,并創(chuàng)建相應的函數參數表;[〇〇36]識別所述協議數據中的命令ID,調用所述命令ID所對應的函數建立與所述接口的連接,并對所述函數的輸出參數進行序列化處理;
[0037]將序列化后的輸出參數發(fā)送給所述客戶端。
[0038]本發(fā)明還提供一種硬件設備的訪問管理系統(tǒng),包括客戶端及服務端,其中:
[0039]所述服務端,用于在檢測到硬件設備接入預定的接口時,建立與所述硬件設備的連接,并創(chuàng)建監(jiān)聽線程,以監(jiān)聽來自客戶端的連接請求;其中,所述服務端以root權限啟動;
[0040]所述客戶端,用于向所述服務端發(fā)起連接請求;
[0041]所述服務端,用于在所述監(jiān)聽線程監(jiān)聽到來自所述客戶端的連接請求,且對所述連接請求經過校驗后,創(chuàng)建服務于所述連接請求的服務線程;
[0042]所述客戶端,用于在接收到上層應用通過調用對應的驅動訪問自身的通信接口后,對根據訪問產生的接口數據進行序列化處理,并將序列化處理生成的二進制數據流打包成協議數據包發(fā)送給所述服務端的服務線程;
[0043]所述服務端,用于在所述服務線程根據所述協議數據包調用相應的函數建立與所述接口的連接,并將所述函數的輸出參數進行序列化處理后返回給所述客戶端;
[0044]所述客戶端,用于對所述函數的輸出參數進行反序列化后寫入函數參數表后,并通過驅動返回給對應的上層應用。
[0045]本發(fā)明實施例提供的硬件設備的訪問管理方法及系統(tǒng),通過在Linux系統(tǒng)環(huán)境或 Android系統(tǒng)環(huán)境下建立能夠以root權限啟動的服務端,并實現對所連接的硬件設備進行連接和訪問管理,使得所述上層應用可在非root權限的情況下,通過所述服務端安全的與所述硬件設備建立連接。此外,由于所述服務端可為每個上層應用配置一個服務線程,使得多個上層應用能夠共享一個硬件設備。【附圖說明】
[0046]為了更清楚地說明本發(fā)明的技術方案,下面將對實施方式中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施方式,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。 [〇〇47]圖1是本發(fā)明實施例提供的硬件設備的訪問管理系統(tǒng)與上層應用和硬件設備的交互示意圖。[〇〇48]圖2是本發(fā)明實施例提供的硬件設備的訪問管理系統(tǒng)的工作示意圖。
[0049]圖3是本發(fā)明實施例提供的協議數據包的數據結構圖。
[0050]圖4是本發(fā)明實施例提供的硬件設備的訪問管理方法的流程示意圖。
[0051]圖5是本發(fā)明實施例提供的服務端的具體執(zhí)行步驟示意圖。
[0052]圖6是本發(fā)明實施例提供的服務端的服務線程的具體執(zhí)行步驟示意圖。[〇〇53]圖7是本發(fā)明實施例提供的硬件設備的訪問管理方法的流程示意圖。[〇〇54]圖8是本發(fā)明實施例提供的硬件設備的訪問管理方法的流程示意圖?!揪唧w實施方式】
[0055]下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。[〇〇56]請參閱圖1及圖2,本發(fā)明實施例提供一種硬件設備訪問管理系統(tǒng)100,用于在 Linux系統(tǒng)環(huán)境或Android系統(tǒng)環(huán)境下,對硬件設備的訪問及連接進行授權管理。其中,所述硬件設備訪問管理系統(tǒng)1〇〇包括客戶端10及服務端20。[〇〇57]所述服務端20,用于在檢測到硬件設備接入預定的接口時,建立與所述硬件設備的連接,并創(chuàng)建監(jiān)聽線程,以監(jiān)聽來自客戶端10的連接請求;其中,所述服務端以root權限啟動。[〇〇58]在本發(fā)明實施例中,所述服務端20在啟動后將主動讀取通信配置,當檢測到有外部的硬件設備通過接口(所述接口可為串口或USB接口,如圖1中的串口301、串口302、 USB303、USB304等)接入到終端(特別地,安裝有Linux系統(tǒng)或Android系統(tǒng)的終端)上時,所述服務端20可與所述硬件設備建立連接,將成功與所述硬件設備建立連接的連接數據保存到連接池中,并創(chuàng)建一個監(jiān)聽線程,以監(jiān)聽來自所述客戶端10的連接請求。[〇〇59]在本發(fā)明實施例中,所述服務端20以root權限啟動,具體地,在Linux系統(tǒng)環(huán)境下, 所述服務端20可由Linux系統(tǒng)通過inetd守護進程以root權限進行啟動;而在Android系統(tǒng)環(huán)境下,所述服務端20以root權限在Android系統(tǒng)啟動的時自動啟動,其中,所述服務端20 可通過在Android系統(tǒng)的NDK層建立一個基于TCP/IP通信的客戶端的應用庫,然后在 Android的底層建立基于TCP/IP的一個通信服務來生成。
[0060]所述客戶端10,用于向所述服務端20發(fā)起連接請求。[〇〇611 在本發(fā)明實施例中,上層應用200通過調用相應的驅動(如圖1所示的驅動201,當然也可為是驅動202,驅動203…,為便于描述,以下均定義為驅動201)以間接調用所述客戶端10的通信接口,此時觸發(fā)所述客戶端10向所述服務端20發(fā)起連接請求。其中,所述客戶端 10可通過TCP/IP發(fā)起與服務端20的監(jiān)聽線程的連接請求。
[0062]所述服務端20,用于在所述監(jiān)聽線程監(jiān)聽到來自所述客戶端10的連接請求,且對所述連接請求經過校驗后,創(chuàng)建服務于所述連接請求的服務線程。
[0063]在本發(fā)明實施例中,所述服務端20的監(jiān)聽線程在接收到每次連接請求時,都會進行握手校驗,校驗成功后,所述監(jiān)聽線程會建立一個通信服務,所述通信服務此時主動創(chuàng)建用于服務當前連接請求的服務線程,并將所述連接請求中的連接描述字交予所述服務線程進行管理,所述服務線程建立后,所述客戶端10就能與所述服務端20的數據通道進行數據的交互。[〇〇64]所述客戶端10,用于在接收到上層應用200通過調用對應的驅動201訪問自身的通信接口后,對根據訪問產生的接口數據進行序列化處理,并將序列化處理生成的二進制數據流打包成協議數據包發(fā)送給所述服務端20的服務線程。[〇〇65]具體地,所述客戶端10等待所述上層應用200調用自身的相應的通信接口,也就是等待上層應用200主動調用驅動201,從而發(fā)出調用所述客戶端10的通信接口,在調用通信接口時,將產生對應的接口數據,所述客戶端10對所述接口數據進行序列化處理,也就是將所述接口數據處理成二進制數據流,并將所述二進制數據流打包成協議數據包后發(fā)給服務端20的服務線程。
[0066]請一并參閱圖3,圖3是所述協議數據包的數據結構示意圖。所述協議數據包包括以下字段:[〇〇67]同步頭字段(GRGB)Dll,用于準確定位數據包頭位置;[〇〇68]校驗碼字段(CRC)D12,用于對每次包頭數據的正確性校對,以提高數據包的準確性,用于生成校驗碼的數據為CMD字段、ID字段、ERROR字段和LEN字段;
[0069]命令字段(CMD)D13,用于描述當前數據包的命令描述,例如初始化命令,初始化應答、調用函數命令,調用函數應答和關閉連接等;
[0070]會話字段(ID)D14,用于描述當前命令CMD的會話ID,也就是保證每次數據交互的上下文的完整性;
[0071]錯誤碼字段(ERR0R)D15,用于描述調用過程中的錯誤信息序號,如果是調用成功時,此處置為0,否則設置為一個非0的數值;
[0072]數據長度字段(LEN)D16,用于描述DATA字段實際的數據長度,如果沒有DATA字段時會設置為〇,否則設置為實際的數據長度;[〇〇73]數據體字段(DATA)D17,交互過程中的實際數據(二進制的數據段),長度由LEN指定。
[0074]所述服務端20,用于在所述服務線程根據所述協議數據包調用相應的函數建立與所述接口的連接,并將所述函數的輸出參數進行序列化處理后返回給所述客戶端10。
[0075]在本發(fā)明實施例中,所述服務線程啟動時進行必要的初始化操作,然后等待接收客戶端10的協議數據包,在接收到所述協議數據包后,所述服務線程對所述協議數據包進行解析,對解析得到的協議數據進行反序列化操作,并創(chuàng)建相應的參數表。此后,所述服務線程讀取所述協議數據中的命令ID(包含于CMD字段D13中),并調用與所述命令ID對應的函數,然后將所述函數的輸出參數數據進行序列化處理后,發(fā)送給所述客戶端10。
[0076]所述客戶端10,用于對所述函數的輸出參數進行反序列化后寫入函數參數表后, 并通過驅動201返回給對應的上層應用200。
[0077]在本發(fā)明實施例中,所述客戶端10對所述函數的輸出參數進行反序列化,將反序列化后的輸出參數寫入函數參數表后,通過驅動201返回給對應的上層應用200,如此,所述上層應用200即可在非root權限的情況下,安全的與所述硬件設備建立連接,并實現對所述硬件設備的訪問。[〇〇78]綜上所述,本發(fā)明實施例提供的硬件設備的訪問管理系統(tǒng)100,在Linux系統(tǒng)環(huán)境下,建立能夠以root權限啟動的服務端20,并實現對所連接的硬件設備進行連接和訪問管理,使得所述上層應用200可在非root權限的情況下,通過所述硬件設備的訪問管理系統(tǒng) 100安全的與所述硬件設備建立連接。此外,由于所述服務端20可為每個上層應用200配置一個服務線程,使得多個上層應用能夠共享一個硬件設備。
[0079]請一并參閱圖4,圖4是本發(fā)明實施例提供的硬件設備的訪問管理方法,所述硬件設備的訪問管理方法是從服務端一側進行描述的,其包括如下步驟:
[0080]S101,服務端在檢測到硬件設備接入預定的接口時,建立與所述硬件設備的連接,并創(chuàng)建監(jiān)聽線程,以監(jiān)聽來自客戶端的連接請求;其中,所述服務端以root權限啟動。
[0081]S102,所述服務端的監(jiān)聽線程在監(jiān)聽到來自所述客戶端的連接請求,且對所述連接請求經過校驗后,創(chuàng)建服務于所述連接請求的服務線程。
[0082]S103,所述服務端的服務線程接收來自所述客戶端發(fā)送的協議數據包,根據所述協議數據包調用相應的函數建立與所述接口的連接,并將所述函數的輸出參數進行序列化處理后返回給所述客戶端,以使所述客戶端對所述函數的輸出參數進行反序列化后寫入函數參數表后,并通過驅動返回給對應的上層應用。
[0083]其中,所述協議數據包由所述客戶端在接收到所述上層應用通過調用所述驅動訪問自身的通信接口后,對根據訪問產生的接口數據進行序列化處理,并對序列化處理生成的二進制數據流進行打包生成。
[0084]本發(fā)明實施例提供的硬件設備的訪問管理方法,在Linux系統(tǒng)環(huán)境下,建立能夠以root權限啟動的服務端,并實現對所連接的硬件設備進行連接和訪問管理,使得所述上層應用可在非root權限的情況下,通過所述服務端安全的與所述硬件設備建立連接。此外,由于所述服務端可為每個上層應用配置一個服務線程,使得多個上層應用能夠共享一個硬件設備。
[0085]下面將分別對所述服務端和服務端的服務線程的具體執(zhí)行步驟做進一步的描述。
[0086]請一并參閱圖5,圖5是所述服務端的具體執(zhí)行步驟示意圖,包括:
[0087]S201:服務端啟動時主動讀取通信配置,并與硬件設備建立連接。
[0088]S202:服務端將成功與硬件設備建立連接的連接數據保存到連接池,并創(chuàng)建監(jiān)聽線程。
[0089]S203:服務端監(jiān)聽客戶端的連接請求。
[0090]S204:服務端判斷是否有合法的連接請求,如果有合法的連接時繼續(xù)執(zhí)行S205,否則跳轉到S203。
[0091]S205:服務端通過所述連接請求中的數據包頭的信息定位數據包讀取握手數據包。
[0092]S206:服務端檢查所述握手數據包是否合法,如果所述握手數據包合法則執(zhí)行S208,否則執(zhí)行S207。
[0093]S207:斷開與所述客戶端的連接請求,釋放連接時所創(chuàng)建的資源,跳轉到S203。
[0094]S208:創(chuàng)建服務于所述連接請求的服務線程以及所需要的資源,并分配連接使用權給客戶端,跳轉到S203繼續(xù)等待下一個連接請求。
[0095]請一并參閱圖6,圖6是所述服務端的服務線程的具體執(zhí)行步驟示意圖,包括:
[0096]S301:服務線程啟動時進行必要的初始化操作;
[0097]S302:等待接收所述客戶端的協議數據包;
[0098]S303:判斷是否接收到協議數據包,如果執(zhí)行S304,否則跳轉到S302繼續(xù)等待接收協議數據包;
[0099]S304:解析所接收的協議數據包,如果解析成功執(zhí)行S305,否則跳轉到S302繼續(xù)等待接收數據;
[0100]S305:對解析所述協議數據包得到的協議數據進行反序列化操作,并創(chuàng)建相應的參數表;[0101 ] S306:識別所述協議數據中的命令ID,如果命令ID能夠識別則執(zhí)行S308,否則執(zhí)行S307;
[0102]S307:返回命令錯誤的通信協議包文給客戶端,然后跳轉到S302繼續(xù)等待接收協議數據包;
[0103]S308:調用命令ID所對應的函數,然后將函數的輸出參數進行序列化處理;
[0104]S309:將序列化后的輸出參數回復給客戶端。
[0105]請一并參閱圖7,圖7是本發(fā)明實施例提供的硬件設備的訪問管理方法的流程示意圖,其是從客戶端一側進行描述的,其包括如下步驟:
[0106]S401:客戶端通過通信接口以TCP/IP的方式連接服務端。
[0107]S402:客戶端判斷連接狀態(tài),如果已經建立合法的連接執(zhí)行S403,否則跳轉到S410o
[0108]S403:客戶端在成功連接后主動發(fā)送握手數據包給服務端。
[0109]S404:客戶端驗證握手是否成功,如果驗證成功繼續(xù)執(zhí)行S405,否則跳轉到S410;
[0110]S405:客戶端等待上層應用調用相應的通信接口,即等待上層應用主動調用驅動,從而對其通信接口進行訪問;
[0111]S406:客戶端對訪問產生的接口數據進行序列化處理,也就是將接口數據處理成二進制數據流;
[0112]S407:客戶端將序列化后的二進制數據流打包成協議數據包發(fā)給服務端的服務線程;
[0113]S408:客戶端等待服務端的服務線程的應答,或者等待應答超時;
[0114]S409:客戶端對服務端返回的序列化后的輸出參數進行反序列化,并回填到函數參數表后,返回給上層應用,跳轉到S405;
[0115]S410:客戶端關閉與服務端的連接。
[0116]請一并參閱圖8,圖8是本發(fā)明實施例提供的硬件設備的訪問管理方法的流程示意圖,其是從客戶端與服務端兩側交互進行描述的,其包括如下步驟:
[0117]S501:服務端在檢測到硬件設備接入預定的接口時,建立與所述硬件設備的連接,并創(chuàng)建監(jiān)聽線程,以監(jiān)聽來自客戶端的連接請求;其中,所述服務端以root權限啟動。
[0118]S502:所述客戶端向所述服務端發(fā)起連接請求。
[0119]S503:所述服務端的監(jiān)聽線程在監(jiān)聽到來自所述客戶端的連接請求,且對所述連接請求經過校驗后,創(chuàng)建服務于所述連接請求的服務線程。
[0120]S504:所述客戶端協議數據包發(fā)送給所述服務端的服務線程。
[0121]其中,所述協議數據包由所述客戶端在接收到上層應用通過調用對應的驅動訪問自身的通信接口后,對根據訪問產生的接口數據進行序列化處理,并將序列化處理生成的二進制數據流打包生成。
[0122]S505:所述服務端的服務線程根據所述協議數據包調用相應的函數建立與所述接口的連接,并將所述函數的輸出參數進行序列化處理后返回給所述客戶端。
[0123]S506:所述客戶端對所述函數的輸出參數進行反序列化,將反序列化后的輸出參數寫入函數參數表后,通過驅動返回給對應的上層應用。
[0124]本發(fā)明實施例提供的硬件設備的訪問管理方法,在Linux系統(tǒng)環(huán)境下,建立能夠以root權限啟動的服務端,并實現對所連接的硬件設備進行連接和訪問管理,使得所述上層應用可在非root權限的情況下,通過所述服務端安全的與所述硬件設備建立連接。此外,由于所述服務端可為每個上層應用配置一個服務線程,使得多個上層應用能夠共享一個硬件設備。
[0125]以上所揭露的僅為本發(fā)明一種較佳實施例而已,當然不能以此來限定本發(fā)明之權利范圍,本領域普通技術人員可以理解實現上述實施例的全部或部分流程,并依本發(fā)明權利要求所作的等同變化,仍屬于發(fā)明所涵蓋的范圍。
[0126]本領域普通技術人員可以理解實現上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory,ROM)或隨機存儲記憶體(Random AccessMemory,RAM)等。
【主權項】
1.一種硬件設備的訪問管理方法,其特征在于,包括如下步驟:服務端在檢測到硬件設備接入預定的接口時,建立與所述硬件設備的連接,并創(chuàng)建監(jiān) 聽線程,以監(jiān)聽來自客戶端的連接請求;其中,所述服務端以root權限啟動;所述服務端的監(jiān)聽線程在監(jiān)聽到來自所述客戶端的連接請求,且對所述連接請求經過 校驗后,創(chuàng)建服務于所述連接請求的服務線程;所述服務端的服務線程接收來自所述客戶端發(fā)送的協議數據包,根據所述協議數據包 調用相應的函數建立與所述接口的連接,并將所述函數的輸出參數進行序列化處理后返回 給所述客戶端,以使所述客戶端對所述函數的輸出參數進行反序列化后寫入函數參數表, 并通過驅動返回給對應的上層應用。2.根據權利要求1所述的硬件設備的訪問管理方法,其特征在于,所述協議數據包由所述客戶端在接收到所述上層應用通過調用所述驅動訪問自身的 通信接口后,對根據訪問產生的接口數據進行序列化處理,并對序列化處理生成的二進制 數據流進行打包生成。3.根據權利要求1所述的硬件設備的訪問管理方法,其特征在于,在Linux系統(tǒng)環(huán)境下,所述服務端由Linux系統(tǒng)通過inetd守護進程以root權限啟動;在Android系統(tǒng)環(huán)境下,所述服務端以root權限在Android系統(tǒng)啟動的時自動啟動,其 中,通過在Android系統(tǒng)的NDK層建立一個基于TCP/IP通信的客戶端的應用庫,然后在 Android的底層建立基于TCP/IP的一個通信服務來生成所述服務端。4.根據權利要求1所述的硬件設備的訪問管理方法,其特征在于,所述服務端的監(jiān)聽線 程在監(jiān)聽到來自所述客戶端的連接請求,且對所述連接請求經過校驗后,創(chuàng)建服務于所述 連接請求的服務線程,具體包括:監(jiān)聽來自客戶端的連接請求;判斷是否有合法的連接請求,若有,則獲取所述連接請求中的數據包頭的信息定位數 據包,讀取握手數據包;檢查所述握手數據包是否合法,若合法,則創(chuàng)建服務于所述連接請求的服務線程,并分 配連接使用權給所述客戶端;若不合法,則拒絕所述客戶端的連接請求。5.根據權利要求1所述的硬件設備的訪問管理方法,其特征在于,所述服務端的服務線 程接收來自所述客戶端發(fā)送的協議數據包,根據所述協議數據包調用相應的函數建立與所 述接口的連接,并將所述函數的輸出參數進行序列化處理后返回給所述客戶端,具體包括:接收所述客戶端發(fā)送的協議數據包;對接收的所述協議數據包進行解析,將解析得到的協議數據進行反序列化,并創(chuàng)建相 應的函數參數表;識別所述協議數據中的命令ID,調用所述命令ID所對應的函數建立與所述接口的連 接,并對所述函數的輸出參數進行序列化處理;將序列化后的輸出參數發(fā)送給所述客戶端。6.—種硬件設備的訪問管理方法,其特征在于,包括如下步驟:服務端在檢測到硬件設備接入預定的接口時,建立與所述硬件設備的連接,并創(chuàng)建監(jiān) 聽線程,以監(jiān)聽來自客戶端的連接請求;其中,所述服務端以root權限啟動;所述客戶端向所述服務端發(fā)起連接請求;所述服務端的監(jiān)聽線程在監(jiān)聽到來自所述客戶端的連接請求,且對所述連接請求經過 校驗后,創(chuàng)建服務于所述連接請求的服務線程;所述客戶端將協議數據包發(fā)送給所述服務端的服務線程;所述服務端的服務線程根據所述協議數據包調用相應的函數建立與所述接口的連接, 并將所述函數的輸出參數進行序列化處理后返回給所述客戶端;所述客戶端對所述函數的輸出參數進行反序列化后寫入函數參數表后,并通過驅動返 回給對應的上層應用。7.根據權利要求6所述的硬件設備的訪問管理方法,其特征在于,在所述客戶端將協議 數據包發(fā)送給所述服務端的服務線程之前,還包括:所述客戶端在接收到所述上層應用通過調用所述驅動訪問自身的通信接口后,對根據 訪問產生的接口數據進行序列化處理,并對序列化處理生成的二進制數據流進行打包生成 協議數據包。8.根據權利要求根據權利要求6所述的硬件設備的訪問管理方法,其特征在于,所述服 務端的監(jiān)聽線程在監(jiān)聽到來自所述客戶端的連接請求,且對所述連接請求經過校驗后,創(chuàng) 建服務于所述連接請求的服務線程,具體包括:監(jiān)聽來自客戶端的連接請求;判斷是否有合法的連接請求,若有,則獲取所述連接請求中的數據包頭的信息定位數 據包,讀取握手數據包;檢查所述握手數據包是否合法,若合法,則創(chuàng)建服務于所述連接請求的服務線程,并分 配連接使用權給所述客戶端;若不合法,則拒絕所述客戶端的連接請求。9.根據權利要求根據權利要求6所述的硬件設備的訪問管理方法,其特征在于,所述服 務端的服務線程根據所述協議數據包調用相應的函數建立與所述接口的連接,并將所述函 數的輸出參數進行序列化處理后返回給所述客戶端,具體包括:解析所述協議數據包,將解析得到的協議數據進行反序列化,并創(chuàng)建相應的函數參數 表;識別所述協議數據中的命令ID,調用所述命令ID所對應的函數建立與所述接口的連 接,并對所述函數的輸出參數進行序列化處理;將序列化后的輸出參數發(fā)送給所述客戶端。10.—種硬件設備的訪問管理系統(tǒng),其特征在于,包括客戶端及服務端,其中:所述服務端,用于在檢測到硬件設備接入預定的接口時,建立與所述硬件設備的連接, 并創(chuàng)建監(jiān)聽線程,以監(jiān)聽來自客戶端的連接請求;其中,所述服務端以root權限啟動;所述客戶端,用于向所述服務端發(fā)起連接請求;所述服務端,用于在所述監(jiān)聽線程監(jiān)聽到來自所述客戶端的連接請求,且對所述連接 請求經過校驗后,創(chuàng)建服務于所述連接請求的服務線程;所述客戶端,用于在接收到上層應用通過調用對應的驅動訪問自身的通信接口后,對 根據訪問產生的接口數據進行序列化處理,并將序列化處理生成的二進制數據流打包成協 議數據包發(fā)送給所述服務端的服務線程;所述服務端,用于在所述服務線程根據所述協議數據包調用相應的函數建立與所述接 口的連接,并將所述函數的輸出參數進行序列化處理后返回給所述客戶端;所述客戶端,用于對所述函數的輸出參數進行反序列化后寫入函數參數表后,并通過 驅動返回給對應的上層應用。
【文檔編號】H04L12/937GK106027487SQ201610280293
【公開日】2016年10月12日
【申請日】2016年4月28日
【發(fā)明人】梁建明, 熊飛, 陳明宇, 張雲瑞, 羅忠明
【申請人】廣州廣電運通金融電子股份有限公司, 廣州廣電運通信息科技有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
班玛县| 博白县| 郓城县| 扶沟县| 河东区| 华安县| 大名县| 石家庄市| 峨眉山市| 吴堡县| 驻马店市| 青冈县| 永顺县| 长阳| 高青县| 连州市| 塔河县| 泗水县| 四川省| 阿鲁科尔沁旗| 京山县| 竹山县| 塔河县| 新乐市| 乌拉特前旗| 资源县| 蓬溪县| 铜梁县| 建湖县| 霍城县| 东乡县| 寿阳县| 秦安县| 大姚县| 环江| 金坛市| 安远县| 长春市| 尖扎县| 广宁县| 蚌埠市|