• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于I/O緩沖區(qū)讀寫(xiě)的控制臺(tái)遠(yuǎn)程交互模型

      2013-09-29 05:20:18宋宇波藍(lán)智靈
      計(jì)算機(jī)工程 2013年1期
      關(guān)鍵詞:命令行緩沖區(qū)命令

      唐 磊,宋宇波,藍(lán)智靈

      (東南大學(xué)信息科學(xué)與工程學(xué)院,南京 210096)

      1 概述

      近年來(lái),隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,通過(guò)網(wǎng)絡(luò)遠(yuǎn)程交互以運(yùn)行各種應(yīng)用或服務(wù)程序,人們可以更方便安全地實(shí)現(xiàn)遠(yuǎn)程辦公等工作[1],具有巨大的市場(chǎng)前景。在現(xiàn)有計(jì)算機(jī)操作系統(tǒng)中,Microsoft公司的Windows系統(tǒng)因其卓越的易用性和絢麗的視覺(jué)效果成為計(jì)算機(jī)系統(tǒng)中大眾用戶的首選。Windows系統(tǒng)主要提供了2種與系統(tǒng)交互的方式:可視化操作和命令行操作。

      基于可視化操作,Windows系統(tǒng)提供了如遠(yuǎn)程桌面連接等途徑[2],遠(yuǎn)程桌面連接基于遠(yuǎn)程桌面協(xié)議(Remote Desktop Protocol, RDP)[3]。為了保障通信數(shù)據(jù)的安全,可以采用SSL-VPN進(jìn)行加密處理[4-5]。

      而在命令行操作方面,現(xiàn)有的實(shí)現(xiàn)命令行操作的常規(guī)方法主要是將控制臺(tái)程序窗口的標(biāo)準(zhǔn)輸入輸出重定向到其父進(jìn)程的發(fā)送/接收管道上[6],或者是重定向到用于遠(yuǎn)程通信的基于TCP/IP協(xié)議的套接字上[7]。由于一些系統(tǒng)安防軟件會(huì)對(duì)系統(tǒng)中程序標(biāo)準(zhǔn)輸入輸出的重定向進(jìn)行審核,因此該方法與這些安防軟件的兼容性較差,會(huì)使其產(chǎn)生誤報(bào)或者誤刪等錯(cuò)誤操作,從而影響整個(gè)系統(tǒng)的穩(wěn)定性。于此同時(shí),由于系統(tǒng)自帶的常用控制臺(tái)程序只能用于本機(jī)操作,沒(méi)有添加遠(yuǎn)程通信的模塊,為了將控制臺(tái)程序用于遠(yuǎn)程交互,需要修改程序源代碼,在程序中添加與遠(yuǎn)程通信的接口。該方法無(wú)法適用于已經(jīng)成型的控制臺(tái)程序,即對(duì)于控制臺(tái)程序的向下兼容性較差。

      針對(duì)以上問(wèn)題,本文提出一種控制臺(tái)遠(yuǎn)程交互模型,并設(shè)計(jì)一種控制臺(tái)程序加載器。

      2 控制臺(tái)遠(yuǎn)程交互

      控制臺(tái)程序是Windows為了兼容DOS程序而設(shè)立的沒(méi)有獨(dú)立窗口的程序,一般在命令行下(cmd.exe)運(yùn)行??刂婆_(tái)程序的輸入輸出是通過(guò)標(biāo)準(zhǔn)I/O進(jìn)行的,不像界面程序可以通過(guò)鼠標(biāo)點(diǎn)擊進(jìn)行操作。一般后臺(tái)運(yùn)行的程序可作為控制臺(tái)程序。

      控制臺(tái)I/O緩沖區(qū)包括輸入緩沖區(qū)和輸出緩沖區(qū)(屏幕緩沖區(qū))。輸入緩沖區(qū)能夠存儲(chǔ)輸入記錄序列,該序列中包含了各種輸入事件的信息,如鍵盤(pán)事件和鼠標(biāo)事件等;輸出緩沖區(qū)是控制臺(tái)窗口的一個(gè)二維的字符數(shù)組和彩色數(shù)據(jù),即屏幕中的文本和背景顏色屬性等信息。

      所謂遠(yuǎn)程交互,是指用戶在異地通過(guò)網(wǎng)絡(luò)與本地計(jì)算機(jī)通信[8]。隨著網(wǎng)絡(luò)的高速發(fā)展,電腦遠(yuǎn)程交互技術(shù)越來(lái)越引起人們的關(guān)注。目前遠(yuǎn)程交互的主要應(yīng)用包括遠(yuǎn)程辦公、遠(yuǎn)程教育、遠(yuǎn)程維護(hù)和遠(yuǎn)程協(xié)助等。

      3 遠(yuǎn)程交互模型分析

      為了更好地實(shí)現(xiàn)對(duì)系統(tǒng)安防軟件的兼容性,以及實(shí)現(xiàn)對(duì)控制臺(tái)程序良好的兼容性,本文提出一種新型的基于I/O緩沖區(qū)讀寫(xiě)的控制臺(tái)程序遠(yuǎn)程交互模型。該模型克服現(xiàn)有解決方案中容易與系統(tǒng)軟件沖突導(dǎo)致系統(tǒng)不穩(wěn)定的不足,并且為了增強(qiáng)對(duì)控制臺(tái)程序的兼容性,提出了一種全新的架構(gòu)。在保證控制臺(tái)程序完整性的前提下,為控制臺(tái)程序提供了一個(gè)加載器,如圖1所示。

      圖1 遠(yuǎn)程交互模型拓?fù)鋱D

      該加載器作為控制臺(tái)程序的父進(jìn)程,采用模擬鍵盤(pán)輸入到窗口輸入緩沖區(qū)的方式作為控制臺(tái)窗口的輸入,并通過(guò)獲取控制臺(tái)窗口的輸出緩沖區(qū)數(shù)據(jù)得到輸出。由加載該控制臺(tái)程序的父進(jìn)程與其進(jìn)行交互,父進(jìn)程通過(guò) Windows套接字(Winsock)與遠(yuǎn)程用戶進(jìn)行命令和數(shù)據(jù)的傳輸,從而實(shí)現(xiàn)對(duì)控制臺(tái)程序的遠(yuǎn)程交互。

      3.1 遠(yuǎn)程交互模型的結(jié)構(gòu)

      該模型的遠(yuǎn)程交互包括以下組件:遠(yuǎn)程主機(jī)接入端和本地控制臺(tái)程序加載器;遠(yuǎn)程主機(jī)接入端與本地控制臺(tái)程序加載器通過(guò)互聯(lián)網(wǎng)或局域網(wǎng)(有線或者無(wú)線)相互通信。

      遠(yuǎn)程主機(jī)接入端具體包括人機(jī)交互模塊和遠(yuǎn)程通信模塊;2個(gè)功能模塊在遠(yuǎn)程主機(jī)系統(tǒng)中運(yùn)行。當(dāng)人機(jī)交互模塊接收到用戶的命令時(shí),將命令轉(zhuǎn)發(fā)給遠(yuǎn)程通信模塊,遠(yuǎn)程通信模塊將命令通過(guò)網(wǎng)絡(luò)發(fā)送給本地控制臺(tái)程序加載器;當(dāng)遠(yuǎn)程通信模塊收到本地控制臺(tái)程序加載器發(fā)送的回顯數(shù)據(jù)時(shí),將數(shù)據(jù)轉(zhuǎn)發(fā)給人機(jī)交互模塊,人機(jī)交互模塊再將數(shù)據(jù)顯示給用戶。

      本地控制臺(tái)程序加載器具體包括本地通信模塊和控制臺(tái)交互模塊;2個(gè)功能模塊在本地主機(jī)系統(tǒng)中運(yùn)行。當(dāng)本地通信模塊收到命令后,將命令轉(zhuǎn)發(fā)給控制臺(tái)交互模塊,控制臺(tái)交互模塊將命令作為控制臺(tái)程序命令行窗口的輸入傳遞給控制臺(tái)程序;當(dāng)控制臺(tái)交互模塊獲取到控制臺(tái)程序命令行窗口的回顯數(shù)據(jù)時(shí),將數(shù)據(jù)轉(zhuǎn)發(fā)給本地通信模塊,本地通信模塊再將回顯數(shù)據(jù)通過(guò)網(wǎng)絡(luò)發(fā)送給遠(yuǎn)程主機(jī)接入端。圖2為該模型結(jié)構(gòu)及模塊間連接關(guān)系示意圖。

      圖2 遠(yuǎn)程交互模型結(jié)構(gòu)及模塊間連接關(guān)系示意圖

      如圖2所示,該模型遠(yuǎn)程交互流程如下:

      (1)本地控制臺(tái)程序加載器初始化,等待遠(yuǎn)程主機(jī)接入端的連接。

      (2)遠(yuǎn)程主機(jī)接入端初始化,與本地控制臺(tái)程序加載器建立連接,做好通信準(zhǔn)備。

      (3)用戶對(duì)遠(yuǎn)程主機(jī)接入端進(jìn)行配置,輸入控制命令。

      (4)遠(yuǎn)程主機(jī)接入端接收到用戶命令,將命令通過(guò)網(wǎng)絡(luò)發(fā)送給本地控制臺(tái)程序加載器。

      (5)本地控制臺(tái)程序加載器接收到命令數(shù)據(jù),將命令通過(guò)模擬鍵盤(pán)輸入的方式作為控制臺(tái)程序命令行窗口的輸入數(shù)據(jù)傳遞給控制臺(tái)程序。

      (6)當(dāng)控制臺(tái)程序處理完命令輸出回顯數(shù)據(jù)時(shí),本地控制臺(tái)程序加載器從控制臺(tái)程序命令行窗口的輸出緩沖區(qū)獲取到回顯數(shù)據(jù),并將數(shù)據(jù)通過(guò)網(wǎng)絡(luò)發(fā)送給遠(yuǎn)程主機(jī)接入端。

      遠(yuǎn)程主機(jī)接入端接收到回顯數(shù)據(jù),通過(guò)人機(jī)交互模塊顯示給用戶。

      3.2 加載器交互模塊分析

      圖3為加載器中控制臺(tái)交互模塊流程。

      圖3 加載器交互模塊流程

      如圖3所示,在與控制臺(tái)程序的命令行窗口交互前,加載器的控制臺(tái)交互模塊先進(jìn)行初始化,創(chuàng)建用于處理控制臺(tái)程序命令行窗口輸入輸出的2個(gè)線程。成功創(chuàng)建線程后,創(chuàng)建控制臺(tái)程序子進(jìn)程。創(chuàng)建成功后,將本地控制臺(tái)程序加載器(父進(jìn)程)的命令行窗口附著到控制臺(tái)程序的命令行窗口上。加載器接收到命令后,輸入線程通過(guò)模擬鍵盤(pán)輸入到窗口輸入緩沖區(qū)的方式將命令輸入到控制臺(tái)程序的命令行窗口,控制臺(tái)程序處理完命令后,加載器的輸出線程從命令行窗口輸出緩沖區(qū)中獲取到回顯數(shù)據(jù),再將數(shù)據(jù)發(fā)送給遠(yuǎn)程主機(jī)接入端。當(dāng)加載器的輸入線程收到的是終止命令時(shí),本地控制臺(tái)程序加載器終止輸入輸出雙線程,然后結(jié)束控制臺(tái)程序子進(jìn)程和自身進(jìn)程。

      3.3 加載器交互模塊具體實(shí)施方案

      結(jié)合圖2對(duì)該模型中的關(guān)鍵技術(shù)進(jìn)行詳細(xì)實(shí)例說(shuō)明。網(wǎng)絡(luò)環(huán)境:互聯(lián)網(wǎng)/局域網(wǎng);硬件設(shè)備:2臺(tái) PC機(jī);運(yùn)行平臺(tái):Windows XP;控制臺(tái)程序:cmd.exe。

      如圖2所示,模型中的遠(yuǎn)程主機(jī)接入端運(yùn)行在一臺(tái)遠(yuǎn)程PC機(jī)上,它的作用是通過(guò)人機(jī)交互模塊接收用戶輸入的命令,使用遠(yuǎn)程通信模塊,將命令經(jīng)由網(wǎng)絡(luò)發(fā)送給本地控制臺(tái)程序加載器。本地控制臺(tái)程序加載器通過(guò)本地通信模塊接收遠(yuǎn)程主機(jī)接入端發(fā)送的命令,將命令由控制臺(tái)交互模塊作為命令行窗口的輸入傳給控制臺(tái)程序;控制臺(tái)程序處理完相應(yīng)命令后,向命令行窗口輸出回顯數(shù)據(jù),本地控制臺(tái)程序加載器的控制臺(tái)交互模塊從控制臺(tái)程序的命令行窗口輸出緩沖區(qū)中獲取回顯數(shù)據(jù),再將回顯數(shù)據(jù)通過(guò)本地通信模塊由網(wǎng)絡(luò)發(fā)送給遠(yuǎn)程主機(jī)接入端。遠(yuǎn)程主機(jī)接入端通過(guò)遠(yuǎn)程通信模塊接收回顯數(shù)據(jù),再將回顯數(shù)據(jù)通過(guò)人機(jī)交互模塊顯示給用戶。

      下面介紹在 Windows環(huán)境下加載器控制臺(tái)交互模塊的具體實(shí)施方法。Microsoft的 Windows系統(tǒng)提供一整套API函數(shù)庫(kù)方便編程人員進(jìn)行二次開(kāi)發(fā)。如圖3所示,具體步驟如下:

      (1)加載器控制臺(tái)交互模塊先進(jìn)行初始化,并調(diào)用函數(shù)創(chuàng)建用于傳遞命令行窗口輸入輸出數(shù)據(jù)的I/O雙線程。

      (2)調(diào)用函數(shù),創(chuàng)建控制臺(tái)程序進(jìn)程(cmd子進(jìn)程)。

      (3)調(diào)用函數(shù),將本地控制臺(tái)程序加載器的命令行窗口附著在cmd子進(jìn)程的命令行窗口上。這樣做的結(jié)果是本地控制臺(tái)程序加載器的命令行窗口的輸入會(huì)成為cmd子進(jìn)程窗口的輸入,cmd子進(jìn)程窗口的輸出會(huì)成為本地控制臺(tái)程序加載器的命令行窗口的輸出。因此,只需要操作本地控制臺(tái)程序加載器的命令行窗口,就可以實(shí)現(xiàn)與cmd子進(jìn)程命令行窗口的交互。

      (4)當(dāng)加載器控制臺(tái)交互模塊收到遠(yuǎn)程發(fā)送來(lái)的用戶命令時(shí),如果是退出命令,則控制臺(tái)交互模塊終止I/O雙線程,然后退出自身程序。

      (5)如果不是退出命令,輸入線程調(diào)用函數(shù),打開(kāi)“CONIN$”,即 cmd子進(jìn)程命令行窗口的輸入緩沖區(qū),結(jié)構(gòu)INPUT_RECORD描述了命令行窗口輸入緩沖區(qū)的一個(gè)輸入事件[9],鍵盤(pán)的一次按鍵的事件可以存儲(chǔ)的一個(gè)INPUT_RECORD結(jié)構(gòu)中,因此,將輸入命令的字符存儲(chǔ)在INPUT_RECORD結(jié)構(gòu)數(shù)組中,調(diào)用函數(shù)將命令輸入到命令行窗口中,即模擬鍵盤(pán)輸入的技術(shù)。

      (6)當(dāng) cmd子進(jìn)程命令行窗口產(chǎn)生回顯數(shù)據(jù)時(shí),輸出線程調(diào)用函數(shù),打開(kāi)“CONOUT$”,即 cmd子進(jìn)程命令行窗口的輸出緩沖區(qū),調(diào)用函數(shù),獲取cmd子進(jìn)程命令行窗口的大小(寬高)[10],根據(jù)大小確定一次從輸出緩沖區(qū)中讀取的字符數(shù),再調(diào)用函數(shù),從輸出緩沖區(qū)中讀取相應(yīng)的字符。

      4 模型測(cè)試結(jié)果分析

      4.1 系統(tǒng)軟件兼容性

      為了測(cè)試該模型對(duì)系統(tǒng)安防軟件的兼容性,針對(duì)目前主流的安防軟件分別搭建了相應(yīng)的測(cè)試平臺(tái),包括 360殺毒/安全衛(wèi)士、卡巴斯基 2011Kav、NOD32和諾頓2011。測(cè)試結(jié)果如表1所示。

      表1 系統(tǒng)安防軟件兼容性測(cè)試結(jié)果

      從表1可以看出,基于控制臺(tái)程序窗口標(biāo)準(zhǔn)輸入輸出重定向的方式會(huì)使安防軟件產(chǎn)生誤報(bào)或者誤刪等錯(cuò)誤操作,兼容性較差,影響系統(tǒng)的穩(wěn)定性;基于控制臺(tái)程序窗口I/O緩沖區(qū)讀寫(xiě)的方式能夠有效避免安防軟件的誤報(bào)和誤刪,提高了系統(tǒng)的穩(wěn)定性,保證了與系統(tǒng)安防軟件的兼容性。

      4.2 控制臺(tái)程序兼容性

      為了測(cè)試該模型對(duì)控制臺(tái)程序的兼容性,針對(duì)目前常用的控制臺(tái)程序搭建了相應(yīng)的測(cè)試平臺(tái),包括cmd.exe、ipconfig.exe、telnet.exe、ftp.exe、nslookup.exe、NetCapture.exe和 ping.exe。測(cè)試結(jié)果如表 2所示。

      表2 控制臺(tái)程序兼容性測(cè)試結(jié)果

      從表2可以看出,由于常用的系統(tǒng)提供的控制臺(tái)程序中沒(méi)有提供用于對(duì)外通信的模塊,因此無(wú)法與其他程序通信。而NetCapture.exe是第三方的控制臺(tái)程序,自身帶有通信模塊,所以能夠兼容?;诳刂婆_(tái)程序窗口標(biāo)準(zhǔn)輸入輸出重定向的方式在不修改控制臺(tái)程序的前提下,無(wú)法用于常用的系統(tǒng)控制臺(tái)程序;基于控制臺(tái)程序窗口I/O緩沖區(qū)讀寫(xiě)的方式能夠?qū)⒖刂婆_(tái)程序作為單獨(dú)模塊,保證其完整性,因此,可以很好地用于常用的各種控制臺(tái)程序,保證該模型對(duì)控制臺(tái)程序的兼容性。

      5 結(jié)束語(yǔ)

      由于現(xiàn)有方案中需要對(duì)控制臺(tái)程序的標(biāo)準(zhǔn)輸入輸出進(jìn)行重定向,容易與系統(tǒng)軟件發(fā)生沖突,并導(dǎo)致系統(tǒng)不穩(wěn)定;同時(shí)為了支持遠(yuǎn)程交互,需要對(duì)控制臺(tái)程序進(jìn)行修改,添加遠(yuǎn)程通信模塊,因此對(duì)控制臺(tái)程序的兼容性較差。

      本文提出了一種基于I/O緩沖區(qū)讀寫(xiě)的控制臺(tái)遠(yuǎn)程交互模型,將控制臺(tái)程序作為獨(dú)立模塊,并設(shè)計(jì)了用于擴(kuò)展其功能的加載器,無(wú)需對(duì)控制臺(tái)程序進(jìn)行修改。該加載器采用模擬鍵盤(pán)輸入到控制臺(tái)窗口輸入緩沖區(qū)的方式實(shí)現(xiàn)控制臺(tái)程序命令行窗口的輸入,從控制臺(tái)窗口的輸出緩沖區(qū)中獲取回顯數(shù)據(jù),并通過(guò)網(wǎng)絡(luò)使本地控制臺(tái)程序與遠(yuǎn)程主機(jī)接入端進(jìn)行遠(yuǎn)程數(shù)據(jù)通信,從而實(shí)現(xiàn)非重定向條件下與控制臺(tái)程序的交互,增強(qiáng)了對(duì)不同類(lèi)型控制臺(tái)程序的兼容性。

      [1]Kara A.Secure Remote Access from Office to Home[J].IEEE Communications Magazine, 2001, 39(10): 68-72.

      [2]Richardson T.Virtual Network Computing[J].IEEE Internet Computing, 1998, 2(1): 33-38.

      [3]Microsoft White Paper.Remote Desktop Protocol(RDP)Features and Performance[EB/OL].(2007-01-20).http://www.microsoft.com/technet/prodtechnol/Win2KTS/evaluate/featfunc/rdpfperf.mspx.

      [4]Stallings W.Network Security Essentials: Applications and Standards[M].[S.l.]: Prentice-Hall, Inc., 2000.

      [5]Cai Longzheng, Yu Shengsheng, Zhou Jingli.Research and Implementation of Remote Desktop Protocol Service over SSL VPN[C]//Proc.of IEEE International Conference on Service Computing.[S.l.]: IEEE Computer Society, 2004:502-505.

      [6]Kernighan B W.The Unix System and Software Reusability[J]. IEEE Transactions on Software Engineering, 1984, 10(5): 513-518.

      [7]Gao Xiaoan, Wang Lina.Networked Control and Monitoring System Based on Industrial Ethernet[C]//Proc.of the 6th IEEE Conference on Industrial Electronics and Applications.[S.l.]: IEEE Press, 2011: 1337-1341.

      [8]Bellucci A, Malizia A, Diaz P, et al.Human-display Interaction Technology: Emerging Remote Interfaces for Pervasive Display Environments[J].IEEE Pervasive Computing, 2010, 9(2): 72-76.

      [9]Richter J, Nasarre C.Windows via C/C++[M].Redmond,USA: Microsoft Press, 2008.

      [10]范文慶, 周彬彬, 安 靖.Windows API 開(kāi)發(fā)詳解——函數(shù)、接口、編程實(shí)例[M].北京: 人民郵電出版社,2011.

      猜你喜歡
      命令行緩沖區(qū)命令
      嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫(xiě)方法的設(shè)計(jì)與實(shí)現(xiàn)
      只聽(tīng)主人的命令
      Windows 10新版CMD更新
      移防命令下達(dá)后
      Linux系統(tǒng)下GRIB2格式GFS資料轉(zhuǎn)為GRIB1格式的方法詳解
      這是人民的命令
      關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
      藍(lán)色命令
      地理信息系統(tǒng)繪圖緩沖區(qū)技術(shù)設(shè)計(jì)與實(shí)現(xiàn)
      電視技術(shù)(2012年1期)2012-06-06 08:13:58
      怀集县| 巴林右旗| 乐平市| 德阳市| 台江县| 阿勒泰市| 天等县| 罗甸县| 通道| 富蕴县| 伊通| 陵川县| 本溪市| 普兰店市| 大连市| 浑源县| 辉南县| 永和县| 海盐县| 西乌| 威信县| 梅州市| 嘉黎县| 吉林市| 宁陵县| 庄浪县| 桑植县| 拉萨市| 辽阳县| 巴里| 额济纳旗| 柯坪县| 原平市| 巴东县| 大厂| 六盘水市| 东阳市| 益阳市| 双桥区| 江城| 衢州市|