国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的方法和系統(tǒng)的制作方法

      文檔序號(hào):6571038閱讀:832來源:國知局
      專利名稱:實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的方法和系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及通信測(cè)試領(lǐng)域,特別涉及一種實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的方法和系統(tǒng)。
      背景技術(shù)
      TCL(Tool Command Language)是一種基于字符串的命令語言,有完善的基礎(chǔ)結(jié)構(gòu),相對(duì)較少的語法和強(qiáng)大的固有的核心命令集,非常容易學(xué)習(xí)和使用。由于TCL的解釋器是用一個(gè)C\C++語言的過程庫實(shí)現(xiàn)的,因此具有良好的擴(kuò)展性;同時(shí)TCL是一種比C\C++語言有著更高抽象層次的語言,并且是解釋執(zhí)行的,所以大大地提高了開發(fā)調(diào)試腳本的速度。因?yàn)檫@兩個(gè)原因,TCL成為測(cè)試行業(yè)通用的工具語言和自動(dòng)測(cè)試中事實(shí)上的標(biāo)準(zhǔn)。TCL是通過TCL語言的命令行程序載體Tclsh來執(zhí)行的。參見圖1,Tclsh進(jìn)程通過標(biāo)準(zhǔn)的輸入(STDIO)和標(biāo)準(zhǔn)的輸出(STDOUT)來和用戶進(jìn)行交互,例如,用戶通過鍵盤輸入測(cè)試命令給Tclsh進(jìn)程,Tclsh進(jìn)程將執(zhí)行的結(jié)果顯示在屏幕上供用戶查看。
      許多軟硬件測(cè)試項(xiàng)目都針對(duì)自己的產(chǎn)品對(duì)TCL加以擴(kuò)展,開發(fā)了基于TCL的測(cè)試平臺(tái)。但是這些測(cè)試平臺(tái)通常是運(yùn)行在單臺(tái)PC機(jī)上的。在實(shí)際測(cè)試過程中,常常需要多臺(tái)PC機(jī)連接多臺(tái)測(cè)試儀,并分別在每臺(tái)PC機(jī)上啟動(dòng)一個(gè)Tclsh進(jìn)程來進(jìn)行測(cè)試;或者用一臺(tái)PC機(jī)同時(shí)連接多個(gè)測(cè)試儀,并在該P(yáng)C機(jī)上同時(shí)啟動(dòng)多個(gè)Tclsh進(jìn)程來進(jìn)行測(cè)試。在現(xiàn)有技術(shù)中,利用TCL的Socket(套接字)功能結(jié)合TCL語言中的vwait命令,能夠?qū)崿F(xiàn)比較簡單的網(wǎng)絡(luò)服務(wù)器功能。當(dāng)需要遠(yuǎn)程調(diào)用時(shí),例如,在一臺(tái)PC機(jī)上的多個(gè)Tclsh進(jìn)程之間進(jìn)行通信,或者在多臺(tái)PC機(jī)上的Tclsh進(jìn)程之間進(jìn)行通信,受Tclsh本身的限制,目前還無法實(shí)現(xiàn)。由于TCL不是事件驅(qū)動(dòng)類型的語言,而且TCL語言中的vwait命令決定了Tclsh一旦進(jìn)入某個(gè)程序的執(zhí)行過程中,就只能處于等待狀態(tài),這時(shí)即使有別的請(qǐng)求發(fā)生Tclsh也無法做出響應(yīng),因此遠(yuǎn)遠(yuǎn)不能滿足遠(yuǎn)程調(diào)用Tclsh指令的要求,而且限制了測(cè)試的靈活性,增加了測(cè)試的復(fù)雜程度和難度。

      發(fā)明內(nèi)容
      為了解決現(xiàn)有技術(shù)中無法實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的問題,本發(fā)明實(shí)施例提供了一種實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的方法,具體包括以下步驟創(chuàng)建本地Tclsh進(jìn)程和遠(yuǎn)程Tclsh進(jìn)程,所述本地Tclsh進(jìn)程和遠(yuǎn)程Tclsh進(jìn)程都包括Tclsh線程和Socket線程;本地Tclsh線程向遠(yuǎn)程Socket線程發(fā)送操作指令,所述遠(yuǎn)程Socket線程接收到所述操作指令后,將所述操作指令轉(zhuǎn)換成遠(yuǎn)程Tclsh線程的輸入并轉(zhuǎn)發(fā)給所述遠(yuǎn)程Tclsh線程;所述遠(yuǎn)程Tclsh線程執(zhí)行所述操作指令后得到執(zhí)行結(jié)果;所述本地Tclsh線程向所述遠(yuǎn)程Socket線程發(fā)送獲取結(jié)果的指令,所述遠(yuǎn)程Socket線程接收到所述獲取結(jié)果的指令后,將所述獲取結(jié)果的指令轉(zhuǎn)換成所述遠(yuǎn)程Tclsh線程的輸入并轉(zhuǎn)發(fā)給所述遠(yuǎn)程Tclsh線程;所述遠(yuǎn)程Tclsh線程將執(zhí)行所述操作指令后得到的執(zhí)行結(jié)果發(fā)送給本地Socket線程,所述本地Socket線程接到后將所述執(zhí)行結(jié)果轉(zhuǎn)換成所述本地Tclsh線程的輸入并轉(zhuǎn)發(fā)給所述本地Tclsh線程。
      本發(fā)明實(shí)施例還提供了一種實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的系統(tǒng),所述系統(tǒng)包括進(jìn)程創(chuàng)建模塊,用于創(chuàng)建本地Tclsh進(jìn)程和遠(yuǎn)程Tclsh進(jìn)程,所述本地Tclsh進(jìn)程和遠(yuǎn)程Tclsh進(jìn)程都包括Tclsh線程和Socket線程;操作指令發(fā)送模塊,用于從所述進(jìn)程創(chuàng)建模塊創(chuàng)建的本地Tclsh線程向所述進(jìn)程創(chuàng)建模塊創(chuàng)建的遠(yuǎn)程Socket線程發(fā)送操作指令;操作指令執(zhí)行模塊,用于在所述遠(yuǎn)程Socket線程接收到所述操作指令發(fā)送模塊發(fā)來的操作指令后,將所述操作指令轉(zhuǎn)換成遠(yuǎn)程Tclsh線程的輸入并轉(zhuǎn)發(fā)給所述遠(yuǎn)程Tclsh線程;還用于利用所述遠(yuǎn)程Tclsh線程執(zhí)行所述操作指令得到執(zhí)行結(jié)果;獲取結(jié)果指令發(fā)送模塊,用于從所述本地Tclsh線程向所述遠(yuǎn)程Socket線程發(fā)送獲取結(jié)果的指令;獲取結(jié)果指令執(zhí)行模塊,用于在所述遠(yuǎn)程Socket線程接收到所述獲取結(jié)果指令發(fā)送模塊發(fā)來的獲取結(jié)果的指令后,將所述獲取結(jié)果的指令轉(zhuǎn)換成所述遠(yuǎn)程Tclsh線程的輸入并轉(zhuǎn)發(fā)給所述遠(yuǎn)程Tclsh線程;還用于從所述遠(yuǎn)程Tclsh線程向本地Socket線程發(fā)送所述操作指令執(zhí)行模塊得到的執(zhí)行結(jié)果,在所述本地Socket線程接到后,將所述執(zhí)行結(jié)果轉(zhuǎn)換成所述本地Tclsh線程的輸入并轉(zhuǎn)發(fā)給所述本地Tclsh線程。
      本發(fā)明實(shí)施例通過新增Socket線程實(shí)現(xiàn)了Tclsh指令的遠(yuǎn)程調(diào)用,簡單易行,提高了TCL用于測(cè)試的能力。


      圖1是現(xiàn)有技術(shù)中Tclsh進(jìn)程的標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出示意圖;圖2是本發(fā)明實(shí)施例中Tclsh線程與新增Socket線程的關(guān)系示意圖;圖3是本發(fā)明實(shí)施例實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的示意圖;圖4是本發(fā)明實(shí)施例實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的方法流程圖;圖5是本發(fā)明實(shí)施例多個(gè)Tclsh進(jìn)程之間實(shí)現(xiàn)遠(yuǎn)程調(diào)用的示意圖;圖6是本發(fā)明實(shí)施例在實(shí)際測(cè)試過程中的應(yīng)用示意圖;圖7是本發(fā)明實(shí)施例實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的系統(tǒng)結(jié)構(gòu)圖。
      具體實(shí)施例方式
      下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說明,但本發(fā)明不局限于下面的實(shí)施例。
      參見圖2,本發(fā)明實(shí)施例不改變Tclsh自身的代碼,通過在Tclsh進(jìn)程中新增Socket線程,并利用Socket自身的功能,將Socket線程接收到的指令轉(zhuǎn)換為Tclsh線程(在現(xiàn)有技術(shù)中是Tclsh進(jìn)程,在本發(fā)明實(shí)施例中是Tclsh線程)的輸入,從而實(shí)現(xiàn)了Tclsh指令的遠(yuǎn)程調(diào)用。
      參見圖3和圖4,本發(fā)明實(shí)施例提供了一種實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的方法,在本地Tclsh進(jìn)程和遠(yuǎn)程Tclsh進(jìn)程之間進(jìn)行通信,具體包括以下步驟步驟101創(chuàng)建本地Tclsh進(jìn)程和遠(yuǎn)程Tclsh進(jìn)程,本地Tclsh進(jìn)程中包括本地原有的Tclsh1線程和新增的Socket1線程;遠(yuǎn)程Tclsh進(jìn)程中包括遠(yuǎn)程原有的Tclsh2線程和新增的Socket2線程。
      步驟102本地Tclsh1線程向遠(yuǎn)程Socket2線程發(fā)送操作指令;例如,在本地Tclsh進(jìn)程操作窗口中鍵入如下命令remote xsend 10.164.31.12 40000“set aa\[add 10000 90000\]”;即本地Tclsh1線程向遠(yuǎn)程Socket2線程發(fā)送一個(gè)執(zhí)行加法操作的命令,其中10.164.31.12為遠(yuǎn)程Tclsh進(jìn)程的IP地址,40000為端口號(hào),“set aa\[add 10000 90000\]”為命令字符串,其內(nèi)容為對(duì)變量aa執(zhí)行加法操作,aa的值為10000,需增加的值為90000;發(fā)送操作指令的過程具體如下創(chuàng)建一個(gè)Socket管道并對(duì)該Socket管道做相應(yīng)的設(shè)置進(jìn)行初始化,在該Socket管道中發(fā)送命令字符串,等待規(guī)定的時(shí)間(如0.3秒)后,從該Socket管道中讀取遠(yuǎn)程Socket2線程發(fā)回的確認(rèn)信息,然后關(guān)閉該Socket管道。
      上述對(duì)Socket管道進(jìn)行相應(yīng)的設(shè)置包括設(shè)置緩沖區(qū)的長度、設(shè)置Socket管道的狀態(tài)(堵塞/不堵塞)和以行為單位發(fā)送命令字符串等等。
      步驟103遠(yuǎn)程Socket2線程接收到本地Tclsh1線程發(fā)來的操作指令后,將該操作指令轉(zhuǎn)換為Tclsh2線程的輸入,并傳輸給Tclsh2線程;將操作指令轉(zhuǎn)換成Tclsh2線程的輸入是通過WM_CHAR(鍵盤)消息來實(shí)現(xiàn)的,即將操作指令中的所有字符串逐個(gè)轉(zhuǎn)換成鍵盤的輸入。
      步驟104Tclsh2線程接收到Socket2線程傳輸來的操作指令后,執(zhí)行該操作指令并得到執(zhí)行結(jié)果;例如,Tclsh2線程收到上述加法操作指令后,對(duì)變量aa執(zhí)行加法操作,10000+90000=100000,運(yùn)算后aa的結(jié)果為100000。
      步驟105Tclsh1線程發(fā)送獲取結(jié)果的指令給Socket2線程;例如,在本地Tclsh進(jìn)程操作窗口中鍵入如下命令remote xget 10.164.31.1240000 aa;即本地Tclsh1線程向遠(yuǎn)程Socket2線程發(fā)送一個(gè)獲取結(jié)果的命令,其中10.164.31.12為遠(yuǎn)程Tclsh進(jìn)程的IP地址,40000為端口號(hào),aa為將要獲取的變量的名稱;發(fā)送獲取結(jié)果指令的過程具體如下將本地Tclsh進(jìn)程的IP地址(如10.164.30.64)發(fā)送給遠(yuǎn)程Socket2線程,將本地Tclsh進(jìn)程的端口號(hào)(如40000)發(fā)送給遠(yuǎn)程Socket2線程;等待規(guī)定的時(shí)間(如0.6秒)后,向遠(yuǎn)程Socket2線程發(fā)送消息,請(qǐng)求遠(yuǎn)程Tclsh進(jìn)程利用xsend函數(shù)發(fā)送一個(gè)命令字符串為aa值的操作指令過來。
      步驟106Socket2線程收到Tclsh1線程發(fā)來的獲取結(jié)果的指令后,將該獲取結(jié)果的指令轉(zhuǎn)換為Tclsh2線程的輸入,并傳輸給Tclsh2線程;將獲取結(jié)果的指令轉(zhuǎn)換為Tclsh2線程的輸入也是通過WM_CHAR消息來實(shí)現(xiàn)的。
      步驟107Tclsh2線程收到Socket2線程發(fā)來的獲取結(jié)果的指令后,將Tclsh2線程執(zhí)行操作指令后得到的執(zhí)行結(jié)果發(fā)送給Socket1線程;例如,Tclsh2線程利用指令中的IP地址和端口號(hào),向Socket1發(fā)送一個(gè)操作指令remotexsend 10.164.30.6440000“set aa $aa”,從而將變量aa運(yùn)算后得到的值100000發(fā)送給Socket1線程。
      步驟108Socket1線程接收到Tclsh2線程發(fā)來的結(jié)果后,將該結(jié)果轉(zhuǎn)換為Tclsh1線程的輸入,并傳輸給Tclsh1線程;將執(zhí)行結(jié)果轉(zhuǎn)換為Tclsh1線程的輸入也是通過WM_CHAR消息來實(shí)現(xiàn)的。
      步驟109Tclsh1線程接收到結(jié)果后,輸出該結(jié)果,即將其顯示在屏幕上本地Tclsh進(jìn)程的操作窗口中。
      本實(shí)施例中的獲取結(jié)果的指令xget與現(xiàn)有的TCL中source命令結(jié)合起來應(yīng)用時(shí),可能存在如下問題當(dāng)source&lt;filename&gt;命令中指定的文件filename中包含有上述獲取結(jié)果的指令xget時(shí),Tclsh只能在source命令執(zhí)行完畢后,才能接收遠(yuǎn)程調(diào)用返回的結(jié)果,因此會(huì)產(chǎn)生錯(cuò)誤。因此,進(jìn)一步地,在本實(shí)施例中還可以增加下面的步驟將source命令擴(kuò)展為xsource&lt;filename&gt;命令,進(jìn)行遠(yuǎn)程調(diào)用時(shí),本地Tclsh1線程向遠(yuǎn)程Socket2線程發(fā)送xsource命令,遠(yuǎn)程Socket2線程收到xsource命令后,先執(zhí)行讀取指定文件filename的操作,然后將指定文件filename中的各條命令轉(zhuǎn)換成鍵盤輸入后發(fā)送給遠(yuǎn)程Tclsh2線程,遠(yuǎn)程Tclsh2線程收到后依次執(zhí)行各條命令得到執(zhí)行結(jié)果;當(dāng)其中包括xget命令時(shí),遠(yuǎn)程Tclsh2線程將相應(yīng)的執(zhí)行結(jié)果通過本地Socket1線程發(fā)送給本地Tclsh1線程。
      由于在執(zhí)行xsource命令的過程中,遠(yuǎn)程Socket2線程依次執(zhí)行指定文件filename中的各條命令,不受source命令的限制,執(zhí)行filename文件中包含的xget命令時(shí),與filename文件本身是否執(zhí)行完畢互相不受影響,因此避免了上述錯(cuò)誤的發(fā)生。
      上述過程可以用于多個(gè)Tclsh進(jìn)程之間進(jìn)行遠(yuǎn)程調(diào)用,例如,參見圖5,當(dāng)需要測(cè)試多臺(tái)路由器之間的數(shù)據(jù)備份功能時(shí),需要為每臺(tái)路由器啟動(dòng)一個(gè)Tclsh進(jìn)程,由于測(cè)試的是數(shù)據(jù)備份功能,所以需要在多個(gè)Tclsh進(jìn)程之間傳輸指令,利用上述過程可以實(shí)現(xiàn)兩個(gè)Tclsh進(jìn)程之間的遠(yuǎn)程調(diào)用,在多個(gè)Tclsh進(jìn)程中同時(shí)應(yīng)用上述過程,從而實(shí)現(xiàn)多個(gè)Tclsh進(jìn)程之間的遠(yuǎn)程調(diào)用。
      對(duì)于不同Tclsh進(jìn)程之間進(jìn)行遠(yuǎn)程調(diào)用時(shí),是依據(jù)Tclsh進(jìn)程的IP地址和端口號(hào)來區(qū)分不同的Tclsh進(jìn)程的,本地Tclsh線程向遠(yuǎn)程Socket線程發(fā)送獲取結(jié)果的指令時(shí),會(huì)發(fā)送本地Tclsh進(jìn)程的IP地址(即本地Tclsh進(jìn)程所在的主機(jī)IP地址)和端口號(hào)給遠(yuǎn)程Socket線程,在遠(yuǎn)程Socket線程內(nèi)部是依據(jù)Tclsh進(jìn)程的端口號(hào)相對(duì)應(yīng)的Tclsh進(jìn)程的標(biāo)號(hào)來區(qū)分不同的Tclsh進(jìn)程的。例如,參見圖6,有四臺(tái)不同型號(hào)的測(cè)試儀,測(cè)試儀1為Avalanche,測(cè)試儀2為TestCenter,測(cè)試儀3為SmartBits6000C,測(cè)試儀4為AX4000,PC機(jī)1與測(cè)試儀1和測(cè)試儀2相連,PC機(jī)2與測(cè)試儀3和測(cè)試儀4相連,各個(gè)測(cè)試儀分別連接不同的交換機(jī)和路由器;在PC機(jī)1上為測(cè)試儀1啟動(dòng)一個(gè)Tclsh1進(jìn)程,為測(cè)試儀2啟動(dòng)一個(gè)Tclsh2進(jìn)程,在PC機(jī)2上為測(cè)試儀3啟動(dòng)一個(gè)Tclsh3進(jìn)程,為測(cè)試儀4啟動(dòng)一個(gè)Tclsh4進(jìn)程;利用上述過程不僅能夠?qū)崿F(xiàn)同一臺(tái)PC機(jī)上不同Tclsh進(jìn)程之間的遠(yuǎn)程調(diào)用,即Tclsh1進(jìn)程和Tclsh2進(jìn)程之間的遠(yuǎn)程調(diào)用,Tclsh3進(jìn)程和Tclsh4進(jìn)程之間的遠(yuǎn)程調(diào)用;還可以實(shí)現(xiàn)不同PC機(jī)上的Tclsh進(jìn)程之間的遠(yuǎn)程調(diào)用,如Tclsh1和Tclsh3之間的遠(yuǎn)程調(diào)用,Tclsh2和Tclsh4之間的遠(yuǎn)程調(diào)用等等。假設(shè)PC機(jī)1的IP地址為10.164.31.12,Tclsh1進(jìn)程的標(biāo)號(hào)為0,端口號(hào)為40000,Tclsh2進(jìn)程的標(biāo)號(hào)為1,端口號(hào)為40001,則當(dāng)用戶在Tclsh1進(jìn)程中給Tclsh2進(jìn)程發(fā)送獲取結(jié)果的指令時(shí),需要發(fā)送Tclsh1進(jìn)程的IP地址10.164.31.12和端口號(hào)40000給Tclsh2進(jìn)程,Tclsh2進(jìn)程根據(jù)端口號(hào)40000對(duì)應(yīng)的進(jìn)程標(biāo)號(hào)0來識(shí)別Tclsh1進(jìn)程。
      本發(fā)明實(shí)施例采用在Tclsh進(jìn)程中增加Socket線程的擴(kuò)展方式能夠?qū)崿F(xiàn)Tclsh指令的遠(yuǎn)程調(diào)用,進(jìn)一步地,還可以在本地Tclsh進(jìn)程中新增其他線程來擴(kuò)展Tclsh的功能,這種方式不需在TCL程序提供的接口上用C語言擴(kuò)展新的函數(shù)或指令,只需通過本地Tclsh線程向遠(yuǎn)程新增的線程發(fā)送命令即可。
      參見圖7,本發(fā)明實(shí)施例還提供了一種實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的系統(tǒng),具體包括(1)進(jìn)程創(chuàng)建模塊,用于創(chuàng)建本地Tclsh進(jìn)程和遠(yuǎn)程Tclsh進(jìn)程,本地Tclsh進(jìn)程和遠(yuǎn)程Tclsh進(jìn)程都包括Tclsh線程和Socket線程;(2)操作指令發(fā)送模塊,用于從進(jìn)程創(chuàng)建模塊創(chuàng)建的本地Tclsh線程向進(jìn)程創(chuàng)建模塊創(chuàng)建的遠(yuǎn)程Socket線程發(fā)送操作指令;(3)操作指令執(zhí)行模塊,用于在遠(yuǎn)程Socket線程接收到操作指令發(fā)送模塊發(fā)來的操作指令后,將該操作指令轉(zhuǎn)換成遠(yuǎn)程Tclsh線程的輸入并轉(zhuǎn)發(fā)給遠(yuǎn)程Tclsh線程;還用于利用遠(yuǎn)程Tclsh線程執(zhí)行該操作指令得到執(zhí)行結(jié)果;(4)獲取結(jié)果指令發(fā)送模塊,用于從本地Tclsh線程向遠(yuǎn)程Socket線程發(fā)送獲取結(jié)果的指令;(5)獲取結(jié)果指令執(zhí)行模塊,用于在遠(yuǎn)程Socket線程接收到獲取結(jié)果指令發(fā)送模塊發(fā)來的獲取結(jié)果的指令后,將該獲取結(jié)果的指令轉(zhuǎn)換成遠(yuǎn)程Tclsh線程的輸入并轉(zhuǎn)發(fā)給遠(yuǎn)程Tclsh線程;還用于從遠(yuǎn)程Tclsh線程向本地Socket線程發(fā)送上述操作指令執(zhí)行模塊得到的執(zhí)行結(jié)果,在本地Socket線程接到后,將執(zhí)行結(jié)果轉(zhuǎn)換成本地Tclsh線程的輸入并轉(zhuǎn)發(fā)給本地Tclsh線程。
      上述操作指令發(fā)送模塊具體包括1)管道創(chuàng)建單元,用于創(chuàng)建一個(gè)Socket管道并對(duì)該Socket管道進(jìn)行初始化;2)發(fā)送單元,用于在管道創(chuàng)建單元?jiǎng)?chuàng)建的Socket管道中發(fā)送命令字符串;3)管道關(guān)閉單元,用于在從管道創(chuàng)建單元?jiǎng)?chuàng)建的Socket管道中讀取到遠(yuǎn)程Socket線程返回的確認(rèn)消息后,關(guān)閉該Socket管道。
      上述獲取結(jié)果指令發(fā)送模塊具體用于從本地Tclsh線程向遠(yuǎn)程Socket線程發(fā)送消息,請(qǐng)求遠(yuǎn)程Tclsh線程向本地Socket線程發(fā)送一個(gè)新的操作指令,所述新的操作指令中包含上述操作指令執(zhí)行模塊得到的執(zhí)行結(jié)果。
      上述實(shí)現(xiàn)Tclsh遠(yuǎn)程調(diào)用的系統(tǒng)還包括
      進(jìn)程識(shí)別模塊,用于在獲取結(jié)果指令發(fā)送模塊向遠(yuǎn)程Socket線程發(fā)送獲取結(jié)果的指令時(shí),將本地Tclsh進(jìn)程的IP地址和端口號(hào)發(fā)送給遠(yuǎn)程Socket線程。
      本發(fā)明實(shí)施例可以利用軟件實(shí)現(xiàn),如利用TCL語言編程實(shí)現(xiàn),相應(yīng)的軟件可以存儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,例如,計(jì)算機(jī)的硬盤、內(nèi)存或光盤等等。
      本發(fā)明實(shí)施例通過增加Socket線程的方式實(shí)現(xiàn)了Tclsh指令的遠(yuǎn)程調(diào)用,提高了測(cè)試的靈活性,降低了測(cè)試的復(fù)雜度和難度;由于本發(fā)明實(shí)施例沒有改變TCL的源代碼,所以不受TCL版本的限制,即使TCL升級(jí)也能實(shí)現(xiàn)Tclsh指令的遠(yuǎn)程調(diào)用。
      以上所述的實(shí)施例,只是本發(fā)明較優(yōu)選的具體實(shí)施方式
      ,本領(lǐng)域的技術(shù)人員在本發(fā)明技術(shù)方案范圍內(nèi)進(jìn)行的通常變化和替換都應(yīng)包含在本發(fā)明的保護(hù)范圍內(nèi)。
      權(quán)利要求
      1.一種實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的方法,其特征在于,所述方法包括以下步驟創(chuàng)建本地Tclsh進(jìn)程和遠(yuǎn)程Tclsh進(jìn)程,所述本地Tclsh進(jìn)程和遠(yuǎn)程Tclsh進(jìn)程都包括Tclsh線程和Socket線程;本地Tclsh線程向遠(yuǎn)程Socket線程發(fā)送操作指令,所述遠(yuǎn)程Socket線程接收到所述操作指令后,將所述操作指令轉(zhuǎn)換成遠(yuǎn)程Tclsh線程的輸入并轉(zhuǎn)發(fā)給所述遠(yuǎn)程Tclsh線程;所述遠(yuǎn)程Tclsh線程執(zhí)行所述操作指令后得到執(zhí)行結(jié)果;所述本地Tclsh線程向所述遠(yuǎn)程Socket線程發(fā)送獲取結(jié)果的指令,所述遠(yuǎn)程Socket線程接收到所述獲取結(jié)果的指令后,將所述獲取結(jié)果的指令轉(zhuǎn)換成所述遠(yuǎn)程Tclsh線程的輸入并轉(zhuǎn)發(fā)給所述遠(yuǎn)程Tclsh線程;所述遠(yuǎn)程Tclsh線程將執(zhí)行所述操作指令后得到的執(zhí)行結(jié)果發(fā)送給本地Socket線程,所述本地Socket線程接到后將所述執(zhí)行結(jié)果轉(zhuǎn)換成所述本地Tclsh線程的輸入并轉(zhuǎn)發(fā)給所述本地Tclsh線程。
      2.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的方法,其特征在于,所述本地Tclsh線程向所述遠(yuǎn)程Socket線程發(fā)送操作指令的步驟具體包括創(chuàng)建一個(gè)Socket管道并對(duì)所述Socket管道進(jìn)行初始化,在所述Socket管道中發(fā)送命令字符串,在從所述Socket管道中讀取到所述遠(yuǎn)程Socket線程返回的確認(rèn)消息后,關(guān)閉所述Socket管道。
      3.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的方法,其特征在于,所述本地Tclsh線程向所述遠(yuǎn)程Socket線程發(fā)送獲取結(jié)果的指令的步驟具體為所述本地Tclsh線程向所述遠(yuǎn)程Socket線程發(fā)送消息,請(qǐng)求所述遠(yuǎn)程Tclsh線程向所述本地Socket線程發(fā)送一個(gè)新的操作指令,所述新的操作指令中包含所述遠(yuǎn)程Tclsh線程執(zhí)行所述操作指令后得到的執(zhí)行結(jié)果。
      4.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的方法,其特征在于,所述方法還包括所述本地Tclsh線程向所述遠(yuǎn)程Socket線程發(fā)送所述獲取結(jié)果的指令時(shí),將所述本地Tclsh進(jìn)程的IP地址和端口號(hào)發(fā)送給所述遠(yuǎn)程Socket線程。
      5.根據(jù)權(quán)利要求1至4中任一權(quán)利要求所述的實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的方法,其特征在于,將所述操作指令轉(zhuǎn)換成所述遠(yuǎn)程Tclsh線程的輸入、將所述獲取結(jié)果的指令轉(zhuǎn)換成所述遠(yuǎn)程Tclsh線程的輸入和將所述執(zhí)行結(jié)果轉(zhuǎn)換成所述本地Tclsh線程的輸入都是通過鍵盤消息來實(shí)現(xiàn)的。
      6.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的方法,其特征在于,所述方法還包括通過在所述本地Tclsh進(jìn)程新增線程的方式來擴(kuò)展Tclsh的功能。
      7.一種實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的系統(tǒng),其特征在于,所述系統(tǒng)包括進(jìn)程創(chuàng)建模塊,用于創(chuàng)建本地Tclsh進(jìn)程和遠(yuǎn)程Tclsh進(jìn)程,所述本地Tclsh進(jìn)程和遠(yuǎn)程Tclsh進(jìn)程都包括Tclsh線程和Socket線程;操作指令發(fā)送模塊,用于從所述進(jìn)程創(chuàng)建模塊創(chuàng)建的本地Tclsh線程向所述進(jìn)程創(chuàng)建模塊創(chuàng)建的遠(yuǎn)程Socket線程發(fā)送操作指令;操作指令執(zhí)行模塊,用于在所述遠(yuǎn)程Socket線程接收到所述操作指令發(fā)送模塊發(fā)來的操作指令后,將所述操作指令轉(zhuǎn)換成遠(yuǎn)程Tclsh線程的輸入并轉(zhuǎn)發(fā)給所述遠(yuǎn)程Tclsh線程;還用于利用所述遠(yuǎn)程Tclsh線程執(zhí)行所述操作指令得到執(zhí)行結(jié)果;獲取結(jié)果指令發(fā)送模塊,用于從所述本地Tclsh線程向所述遠(yuǎn)程Socket線程發(fā)送獲取結(jié)果的指令;獲取結(jié)果指令執(zhí)行模塊,用于在所述遠(yuǎn)程Socket線程接收到所述獲取結(jié)果指令發(fā)送模塊發(fā)來的獲取結(jié)果的指令后,將所述獲取結(jié)果的指令轉(zhuǎn)換成所述遠(yuǎn)程Tclsh線程的輸入并轉(zhuǎn)發(fā)給所述遠(yuǎn)程Tclsh線程;還用于從所述遠(yuǎn)程Tclsh線程向本地Socket線程發(fā)送所述操作指令執(zhí)行模塊得到的執(zhí)行結(jié)果,在所述本地Socket線程接到后,將所述執(zhí)行結(jié)果轉(zhuǎn)換成所述本地Tclsh線程的輸入并轉(zhuǎn)發(fā)給所述本地Tclsh線程。
      8.根據(jù)權(quán)利要求7所述的實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的系統(tǒng),其特征在于,所述操作指令發(fā)送模塊具體包括管道創(chuàng)建單元,用于創(chuàng)建一個(gè)Socket管道并對(duì)所述Socket管道進(jìn)行初始化;發(fā)送單元,用于在所述管道創(chuàng)建單元?jiǎng)?chuàng)建的Socket管道中發(fā)送命令字符串;管道關(guān)閉單元,用于在從所述管道創(chuàng)建單元?jiǎng)?chuàng)建的Socket管道中讀取到所述遠(yuǎn)程Socket線程返回的確認(rèn)消息后,關(guān)閉所述Socket管道。
      9.根據(jù)權(quán)利要求7所述的實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的系統(tǒng),其特征在于,所述獲取結(jié)果指令發(fā)送模塊具體用于從所述本地Tclsh線程向所述遠(yuǎn)程Socket線程發(fā)送消息,請(qǐng)求所述遠(yuǎn)程Tclsh線程向所述本地Socket線程發(fā)送一個(gè)新的操作指令,所述新的操作指令中包含所述遠(yuǎn)程Tclsh線程執(zhí)行所述操作指令后得到的執(zhí)行結(jié)果。
      10.根據(jù)權(quán)利要求7所述的實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的系統(tǒng),其特征在于,所述系統(tǒng)還包括進(jìn)程識(shí)別模塊,用于在所述獲取結(jié)果指令發(fā)送模塊向所述遠(yuǎn)程Socket線程發(fā)送所述獲取結(jié)果的指令時(shí),將所述本地Tclsh進(jìn)程的IP地址和端口號(hào)發(fā)送給所述遠(yuǎn)程Socket線程。
      全文摘要
      本發(fā)明提供了一種實(shí)現(xiàn)Tclsh指令遠(yuǎn)程調(diào)用的方法和系統(tǒng),屬于通信測(cè)試領(lǐng)域。為了解決現(xiàn)有技術(shù)中無法遠(yuǎn)程調(diào)用Tclsh指令的問題,本發(fā)明提供了上述方法,包括本地和遠(yuǎn)程創(chuàng)建含Tclsh和Socket線程的Tclsh進(jìn)程;遠(yuǎn)程Socket線程接收本地Tclsh線程發(fā)來的操作指令,轉(zhuǎn)換后發(fā)給遠(yuǎn)程Tclsh線程以執(zhí)行;遠(yuǎn)程Tclsh線程接到本地Tclsh線程通過遠(yuǎn)程Socket線程發(fā)來的獲取結(jié)果的指令,通過本地Socket線程向本地Tclsh線程發(fā)送執(zhí)行的結(jié)果。上述系統(tǒng)包括進(jìn)程創(chuàng)建模塊、操作指令發(fā)送模塊、操作指令執(zhí)行模塊、獲取結(jié)果指令發(fā)送模塊和獲取結(jié)果指令執(zhí)行模塊。本發(fā)明實(shí)現(xiàn)了Tclsh指令的遠(yuǎn)程調(diào)用。
      文檔編號(hào)G06F11/36GK101030899SQ200710002878
      公開日2007年9月5日 申請(qǐng)日期2007年2月8日 優(yōu)先權(quán)日2007年2月8日
      發(fā)明者許健翔 申請(qǐng)人:華為技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1