【正文】
入 MTP 命令方式通信,并將結(jié)果作為響應(yīng)傳送給客戶端或者直接顯示在終端屏幕上。Java 技術(shù)具有卓越的通用性、高效性、平臺(tái)移植性和安全性,廣泛應(yīng)用于個(gè)人 PC、數(shù)據(jù)中心、游戲控制臺(tái)、科學(xué)超級(jí)計(jì)算沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文10機(jī)、移動(dòng)電話和互聯(lián)網(wǎng),同時(shí)擁有全球最大的開(kāi)發(fā)者專業(yè)社群。在 Java SE 版本中,Java 又引入了泛型編程(Generic Programming)、類型安全的枚舉、不定長(zhǎng)參數(shù)和自動(dòng)裝/拆箱等語(yǔ)言特性。除此之外,Schema 支持命名空間,內(nèi)置多種簡(jiǎn)單和復(fù)雜的數(shù)據(jù)類型,并支持自定義數(shù)據(jù)類型。幸運(yùn)的是,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 Java 開(kāi)發(fā)工具(Java Development Kit,JDK) 。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文11 安全傳輸層協(xié)議(TLS)安全傳輸層協(xié)議(TLS) 用于在兩個(gè)通信應(yīng)用程序之間提供保密性和數(shù)據(jù)完整性。TLS 記錄協(xié)議是一種分層協(xié)議。TLS 連接狀態(tài)指的是 TLS 記錄協(xié)議的操作環(huán)境。TLS 握手協(xié)議由三個(gè)子協(xié)議組構(gòu)成,允許對(duì)等雙方在記錄層的安全參數(shù)上達(dá)成一致、自我認(rèn)證、例示協(xié)商安全參數(shù)、互相報(bào)告出錯(cuò)條件。TLS 包含三個(gè)基本階段:、基于 PKI 證書的身份認(rèn)證沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文123 MTP Simulator 概要設(shè)計(jì) 系統(tǒng)結(jié)構(gòu)定義系統(tǒng)結(jié)構(gòu)如圖 所示。程序啟動(dòng)后會(huì)自動(dòng)監(jiān)聽(tīng) Socket 連接,當(dāng)有 MTP 命令傳入時(shí),MTP Simulator 可以自動(dòng)接收和處理。 Console 方式的 MTP 命令本系統(tǒng)支持在控制臺(tái)上輸入 MTP 命令,輸入的命令分為兩類。reload:對(duì)本系統(tǒng)中所涉及到的所有文件重新加載,其中批處理文件中所設(shè)定的 MTP 命令也將被重新執(zhí)行一遍。例如:USER LOGIN name pwd注:USER LOGIN 為命令部分, name 和 pwd 分別為該命令的兩個(gè)參數(shù),每個(gè)字段都以空格符來(lái)隔開(kāi)。執(zhí)行 MTP 批處理文件方式有兩種,一種是通過(guò)控制臺(tái)輸入控制命令的方式,另一種為通過(guò)系統(tǒng)的輪詢方式。 記錄 recorder 文件本系統(tǒng)提供記錄 recorder 功能。具體的操作方法如下,即圖 所示?;コ饪刂莆募詷?biāo)準(zhǔn)的 XML 文件格式來(lái)定義描述 MTP 消息之間的這種互斥關(guān)系。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文17圖 Response 定義文件結(jié)構(gòu)圖其中 1 輸入?yún)?shù)值 、2 響應(yīng)代碼、3 響應(yīng)信息、4 響應(yīng)參數(shù)開(kāi)始標(biāo)簽、5 響應(yīng)參數(shù)名、6 響應(yīng)參數(shù)類型、7 響應(yīng)參數(shù)值、8 響應(yīng)參數(shù)結(jié)束標(biāo)簽、9 響應(yīng)結(jié)束標(biāo)簽、10 執(zhí)行 MTP 命令的延遲時(shí)間、 11 響應(yīng)開(kāi)始標(biāo)簽。圖 參數(shù)文件以下列出可設(shè)定的參數(shù): 指 MTP Simulator 運(yùn)行時(shí)所使用的 IP 地址 指 MTP Simulator 運(yùn)行時(shí)所監(jiān)聽(tīng)的端口號(hào) 指請(qǐng)求超時(shí)的時(shí)間 指連接超時(shí)的時(shí)間 是 MTP Simulator 允許的最大連接數(shù)量沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文18 是否使用客戶端認(rèn)證(只能取值 on 或 off) Keystore 文件的位置 Keystore 文件的密碼 是否使用 TLS 加密通信(只能取值 on 或 off) 指定語(yǔ)法定義文件 指定互斥文件 指定批處理文件 指定日志輸出文件 是否記錄操作日志 文件自動(dòng)輪詢(只能取值 on 或 off) 文件自動(dòng)輪詢間隔 圖形界面設(shè)定系統(tǒng)參數(shù)Dashboard 圖形界面是 MTP Simulator 提供給用戶用來(lái)動(dòng)態(tài)修改系統(tǒng)參數(shù)的圖形化操作界面,界面上的每個(gè)設(shè)定項(xiàng)在 文件中都有對(duì)應(yīng)的設(shè)定項(xiàng),圖形界面說(shuō)明如下圖 所示。(1)“tlsEncryption”參數(shù)的取值只能是 “on”或“off”, “on”表示使用 TLS 加密,“off”表示不使用 TLS 加密;(2)“clientAuthentication”參數(shù)的取值同樣只能是“on”或“off”, “on” 表示使用客戶端驗(yàn)證, “off”表示不使用客戶端驗(yàn)證;(3)“keystoreLocation”用來(lái)指定用來(lái)維護(hù)證書文件的 Keystore 文件的位置;“keystorePassword”是對(duì)應(yīng)的 Keystore 的密碼。如圖 所示。啟動(dòng) M T P S i m u l a t o r啟動(dòng) M T P S e r v e r 對(duì)S o c k e t 監(jiān)聽(tīng)S o c k e t 管理S o c k e t 接收處理M T P 命令解析命令處理返回結(jié)果并記錄日志控制臺(tái)監(jiān)聽(tīng)命令啟動(dòng)監(jiān)聽(tīng)文件是否改變觀察者線程判定控制臺(tái)接受命令類型命令為r e l o a d命令為 q u i t命令為 M T P 命令命令為d a s h b o a r d退出系統(tǒng)開(kāi)啟 U I 界面重新設(shè)置配置信息重載所有配置文件通知相關(guān) f i l e 文件重新加載加載配置文件M T P S i m u l a t o r P r o c e s sM T P 批處理文件執(zhí)行 M T P 命令C o n s o l e 接收處理啟動(dòng)文件變更的監(jiān)聽(tīng)線程M T P 批處理文件執(zhí)行 M T P 命令1 . S e t t i n g 配置文件2 . A r g s R e a d e r 命令行輸入沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文23圖 MTPSimulator 總體邏輯 Socket MTP 模塊處理邏輯1 Socket MTP 請(qǐng)求接收首先,線程啟動(dòng),負(fù)責(zé)監(jiān)聽(tīng)請(qǐng)求接收,如果有請(qǐng)求,則獲取信息,該信息包括命令類型、IP、Source 類型。獲取信息根據(jù)特定的 S o u r c e類型創(chuàng)建輸入輸出流將信息封裝根據(jù) S o c k e t 對(duì)象獲取到的命令, I P , S o u r c e 類型這里的信息包括 :1 . 根據(jù) S o c k e t 對(duì)象獲取的一條命令2 . I P 地址3 . S o u r c e 類型4 . 流信息啟動(dòng)請(qǐng)求處理線程請(qǐng)求接收線程啟動(dòng)獲取信息是否超時(shí)F終止該請(qǐng)求接收線程T結(jié)束該線程時(shí) , 計(jì)數(shù)器 ( 服務(wù)器當(dāng)前S o c k e t 連接數(shù) ) 1S o c k e t R e q u e s t R e c e i v e r圖 Socket 請(qǐng)求接收流程圖2 Socket MTP 命令處理處理的流程如下:沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文24【解析 MTP 命令】?【進(jìn)行互斥檢查 】? 【獲取命令的 Response 信息】?【發(fā)送 Response 信息】?【記錄操作】 。延遲執(zhí)行時(shí),獲取當(dāng)前時(shí)間,與處理時(shí)間進(jìn)行比較,如果超時(shí)了,就向客戶端發(fā)送一個(gè) error response,如果沒(méi)有超時(shí),則再進(jìn)行互斥檢查。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文25獲取 c m d 字符串該判斷調(diào)用 R e q u e s t F i l t e r 完成r u n n i n g C m d s 保存在 R e q u e s t F i l t e r 中互斥性檢查向客戶端發(fā)送e r r o r r r e s p o n s e獲取當(dāng)前時(shí)間 , 與處理時(shí)間進(jìn)行比較 d e l a y T i m e = 0 向客戶端發(fā)送s u c c e s s r e s p o n s eN o t r u nD e l a y r u nM T P R e q u e s tNY延遲 d e l a y t i m e從 r u n n i n g C m d s 中移除該命令將該命令加入r u n n i n g C m d sN記錄命令開(kāi)始處理時(shí)間是否超時(shí)向客戶端發(fā)送e r r o r r r e s p o n s e解析命令字符串調(diào)用 R e s p o n s e P a r s e r 解析 c m d 命令字符串獲取 命令名和命令參數(shù)獲取 r e s p o n s e 信息R u n處理結(jié)束是否需要記錄R e c o r d記錄 R e c o r d結(jié)束開(kāi)始R e q u e s t P r o c e s s o r P r o c e s s向客戶端發(fā)送e r r o r r r e s p o n s eL o g O u t圖 SocketMTP 命令處理流程3 Socket MTP 命令解析流程沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文26這里,解析 MTP 命令,是獲取到命令字符串,然后將其存放到一個(gè)數(shù)組中,以空格為分界,依次存放。遍歷HashTable 的每一項(xiàng),如果 L1 和 L3 相等,就可視為符合命令格式。具體流程請(qǐng)參見(jiàn)下圖 所示。如果沒(méi)有交集,則繼續(xù)判斷 B 和 C 是否有交集,如果有,則返回 Delay Run,即延遲執(zhí)行,如果沒(méi)有,則返回 Run,可以執(zhí)行。s Delay = 0 (Default )The file has Delay node and the node39。s child RequestParameterString matches the request parameters?Set Message39。ConsoleMTP 總體處理邏輯如下圖 所示。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文32 圖 File MTP 的輸入File MTP 的響應(yīng)結(jié)果如下圖 所示。File MTP 請(qǐng)求接收流程如下圖 所示。config:負(fù)責(zé)所有與配置選項(xiàng)、文件讀取相關(guān)的操作。recorder:用于記錄 MTP 命令的響應(yīng)信息及系統(tǒng)日志的記錄。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文37MTP Simulator Class Diagrampkg RequestProcessorMTPMessageResponseSender RequestFilterSocketRequestReceiver ConsoleRequestReceiver FileRequestReceiver MtpServerMtpSimulator ArgsReaderSettingRequestReceiverIfcRequestReceiverIfcRequestReceiverIfcOperationRecorderRunableRunableRunableRunableResponseProcessor FileMonitor圖 系統(tǒng)類結(jié)構(gòu)圖 類功能詳細(xì)設(shè)計(jì)1 MTPSimulator 類main(string[])(1) 功能主程序的入口,初始化 Simulator(包括讀取命令行參數(shù)和用戶配置文件),啟動(dòng) MTP Server。(4) 異常IOException,讀取數(shù)據(jù)流時(shí),發(fā)生該異常。(3) 輸出:properties(用于存放配置信息的一塊內(nèi)存空間 )。表 41 命令行參數(shù)一覽 參數(shù)名 含義 參數(shù)值1 port 監(jiān)聽(tīng)端口號(hào) 1655352 useClientCertify 是否使用客戶端認(rèn)證 on / off3 useEncrypt 是否支持 MTP 通信加密 on / off4 useCertificate TLS 通信使用的認(rèn)證文件 表示文件路徑的字符串5 optionFile Option 文件 表示文件路徑的字符串6 outputFile 響應(yīng)結(jié)果的輸出文件 表示文件路徑的字符串7 MTPDict MTP 消息的定義文件 表示文件路徑的字符沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文39 參數(shù)名 含義 參數(shù)值串8 mutexFile MTP 消息的互斥文件 表示文件路徑的字符串9 MTPFile 要執(zhí)行的 MTP 消息文件 表示文件路徑的字符串10 responseDelay 命令響應(yīng)的 delay 量 大于 0 的整數(shù)11 pollingInterval 檢查文件變更的時(shí)間間隔 大于 0 的整數(shù)12 autoPoll 檢查文件變更的方式 manual / autoreadArgs(String filename)(1) 功能讀取 optionFile 中的命令行參數(shù),對(duì)命令行參數(shù)進(jìn)行解析,將解析結(jié)果保存在內(nèi)存中。異常信息為:File is not found!② IOException 文件讀入失敗。bInitParams(用于判斷內(nèi)存是否需要清空的標(biāo)志)(3) 輸出:properties(用于存放配置信息的一塊內(nèi)存空間)。與命令行參數(shù)不同,配置屬性有默認(rèn)值,屬性名與屬性值在配置文件中獨(dú)占一行,以【= 】 連接。(3) 輸出:同上。mtpRequest(MTP 請(qǐng)求對(duì)象),該對(duì)象包含的屬性有 MTP 請(qǐng)求類型、發(fā)送 MTP 請(qǐng)求的 client 端的 IP 地址(如果存在)和請(qǐng)求信息(3) 輸出:( 操作日志),該日志記錄的是對(duì) MTP 命令進(jìn)行處理后的結(jié)果。(3) 輸出:Response 信息(MTP 命令獲得所對(duì)應(yīng)的 Response 信息)。該隊(duì)列由 Socket 管理線程讀取,并進(jìn)行處理。(3) 輸出:queue( 用于存放已連接的 Socket 的隊(duì)列 ),接收到得 Socket 都將在隊(duì)列中進(jìn)行等待,該隊(duì)列