遠程監(jiān)控是指在網(wǎng)絡(luò)中由一臺設(shè)備(客戶端)通過遠程監(jiān)控軟件遠距離監(jiān)視與控制目標設(shè)備(服務(wù)器端)的技術(shù)。操作者可以監(jiān)視被控端設(shè)備的屏幕顯示,啟動被控端設(shè)備應(yīng)用程序,執(zhí)行操作指令,獲取結(jié)果。現(xiàn)代遠程監(jiān)控技術(shù)是實時在線的監(jiān)控方式,借助于計算機、網(wǎng)絡(luò)和通信技術(shù),具有控制功能強、操作簡便和可靠性高等特點。
網(wǎng)絡(luò)故障測試儀是基于Linux操作系統(tǒng)的嵌入式手持設(shè)備,主要用于測試網(wǎng)絡(luò)故障現(xiàn)場、評估性能、提供專家解釋。專家親臨故障現(xiàn)場需要耗費一定的時間和財力,遠程監(jiān)控軟件可以幫助專家通過互聯(lián)網(wǎng)絡(luò)訪問遠端的測試設(shè)備,了解網(wǎng)絡(luò)運行參數(shù),給出解決方案,實現(xiàn)遠程專家系統(tǒng)。遠程監(jiān)控軟件將為便攜式網(wǎng)絡(luò)故障測試儀提供有效的遠程操作、監(jiān)控及遠程技術(shù)支持能力。
1、遠程監(jiān)控軟件的功能和結(jié)構(gòu)
1.1 軟件主要功能
網(wǎng)絡(luò)故障測試儀是一臺便攜式設(shè)備,通常接人需要測試的網(wǎng)絡(luò)中。遠程監(jiān)控將為用戶提供在個人電腦上直接觀測網(wǎng)絡(luò)狀態(tài)的能力;同時當網(wǎng)絡(luò)出現(xiàn)故障時,也能為遠程專家了解網(wǎng)絡(luò)故障,給出解決方案提供便利。因此,遠程監(jiān)控軟件主要實現(xiàn)對異地測試儀的操作功能,顯示設(shè)備返回的狀態(tài);通過在設(shè)備間建立起的數(shù)據(jù)交換通道,實現(xiàn)雙向的數(shù)據(jù)通信。 遠程監(jiān)控軟件實現(xiàn)在監(jiān)控時,獲取客戶端發(fā)出的控制命令,控制服務(wù)器根據(jù)應(yīng)用層協(xié)議對命令解釋后執(zhí)行相應(yīng)的動作,返回執(zhí)行結(jié)果;同時設(shè)置服務(wù)器根據(jù)用戶界面所需顯示參數(shù),定時執(zhí)行操作返回結(jié)果數(shù)據(jù)刷新界面。
1.2 軟件體系結(jié)構(gòu)
軟件功能分解到通信的兩個端點上,即客戶端和服務(wù)器端,采用Client/Server模式。這樣能提高設(shè)計的靈活性,易于系統(tǒng)的擴展。服務(wù)器端集成在測試儀中,與設(shè)備的其他功能模塊協(xié)調(diào)工作,為客戶端提供執(zhí)行共享資源的管理應(yīng)用程序人口;客戶端則提供交互界面及結(jié)果顯示;數(shù)據(jù)交換通道的建立由雙方的數(shù)據(jù)通信模塊負責。從而實現(xiàn)點到點的直接控制監(jiān)控,滿足實時性要求。軟件體系結(jié)構(gòu)如圖1所示。
① 客戶端的主要功能模塊為:消息輸入/顯示模塊,通信管理模塊。消息輸入模塊負責將用戶界面的按鈕事件傳送到通信模塊,通信模塊將命令信息發(fā)送到受控端;受控端執(zhí)行操作后返回的成功或失敗信息交由客戶端消息顯示模塊根據(jù)信息的格式進行顯示。
② 服務(wù)器端的主要功能模塊為:通信管理模塊,命令解釋模塊,函數(shù)調(diào)用模塊。服務(wù)器處于偵聽狀態(tài), 一旦接收到合法的連接請求,則建立信號通路,通過通信管理模塊接收客戶端發(fā)來的命令信息,經(jīng)解釋模塊解釋后,調(diào)用函數(shù)執(zhí)行相應(yīng)的指令,并將結(jié)果返回到客戶端。
[b]2、遠程監(jiān)控軟件設(shè)計
[/b] 2.1 消息輸入/顯示模塊實現(xiàn)
客戶端輸入/顯示模塊的開發(fā)采用Visual C++,利用模塊化、通用性強的特點,實現(xiàn)遠程監(jiān)控中用戶界面的編寫。用戶顯示界面保持與設(shè)備界面的一致,方便用戶操作。
2.2 通信模塊實現(xiàn)
(1) Socket編程
數(shù)據(jù)通信模塊中的數(shù)據(jù)通道建立采用Socket編程。Socket支持TCP/IP協(xié)議網(wǎng)絡(luò)通信的基本操作;它屏蔽了網(wǎng)絡(luò)底層的通信細節(jié),使編程簡單;它對通信端點進行了抽象,提供發(fā)送和接收數(shù)據(jù)機制及打開、計算和關(guān)閉會話的能力。本項目中,客戶端運行在Windows操作平臺下,采用WinSock來編程實現(xiàn)命令和數(shù)據(jù)信息的傳輸;而服務(wù)端運行在Linux操作平臺下,通信直接使用Socket編程實現(xiàn)。
(2) 通信建立
服務(wù)器與客戶端開始都必須調(diào)用socket()函數(shù)產(chǎn)生一個Socket套接字;然后服務(wù)器調(diào)用bind()函數(shù),將套接字與本地網(wǎng)絡(luò)地址捆扎在一起,在網(wǎng)絡(luò)上標志該套接字;只有當服務(wù)器執(zhí)行完accept()進入監(jiān)聽模式、阻塞狀態(tài)后,才能接收客戶端的connect()請求并決定是否接收數(shù)據(jù);建立連接后,客戶端與服務(wù)器之間便可以雙向傳輸數(shù)據(jù)。服務(wù)器主要通信代碼:
listenfd=socket(AF—INET,SOCK—STREAM,0)
bind(1istenfd,(SOCKADDR %)&sockaddr—echo,sizeof(struct sockaddr_in))
echofd=accept(1istenfd,(SOCKADDR %)(&sockaddrcli),&sizeof(SOCKADDR));
while((read—n=read(echofd,revbuf,BUFLEN))0)
{.一//指令解釋與函數(shù)調(diào)用}
if((write—n=write(echofd,okbuf,strlen(sendbuff)))0)
{.一//將結(jié)果返回給客戶端}
其中,客戶端與服務(wù)器間制定統(tǒng)一的數(shù)據(jù)通信協(xié)議,所有的數(shù)據(jù)和指令信息統(tǒng)一編碼,編碼格式為:命令代碼:數(shù)據(jù)部分(各數(shù)據(jù)之間用#分隔)。在傳輸用戶密碼時,采用事先約定好的數(shù)據(jù)加密密匙,以防明文形式傳輸造成的信息泄漏。
2.3 調(diào)用模塊實現(xiàn)
設(shè)備應(yīng)用層中設(shè)計了Controller調(diào)用管理模塊,負責調(diào)用現(xiàn)場設(shè)備測試線程,啟動服務(wù)器線程,以及服務(wù)器與測試線程間指令和返回結(jié)果的傳遞。服務(wù)器收到客戶端指令,交由解釋模塊解釋后傳送給Controller,等待Controller的結(jié)果參數(shù)返回給客戶即可。Controller是設(shè)備的核心,負責管理設(shè)備中的所有進程。
2.4 軟件流程
圖2為軟件核心流程。
[b]3、實驗結(jié)果
[/b] 遠程監(jiān)控系統(tǒng)的工作過程如下:遠程客戶首先通過IE瀏覽器將客戶端程序下載到本地,運行客戶端程序,顯示如圖3所示,按照提示輸入服務(wù)器IP地址和用戶密碼。待服務(wù)器接受連接,確認密碼正確后,客戶端出現(xiàn)功能選擇界面;點擊界面按鈕就可以遠程操作儀器,了解遠程網(wǎng)絡(luò)狀態(tài),例如圖4為網(wǎng)絡(luò)參數(shù)顯示結(jié)果。如果服務(wù)器沒有開放或是由于網(wǎng)絡(luò)故障而導(dǎo)致網(wǎng)絡(luò)不通,則會提示用戶“服務(wù)器關(guān)閉或網(wǎng)絡(luò)出錯,稍后再試”。
圖4 用戶監(jiān)控界面
[b]4、結(jié)束語
[/b] 本研究給出了一種基于互聯(lián)網(wǎng)絡(luò)的便攜式設(shè)備遠程監(jiān)控的可行性方案,該方案無需改變原有設(shè)備的控制系統(tǒng),通過添加數(shù)據(jù)接入方式,將原有設(shè)備接入遠程監(jiān)控平臺,實現(xiàn)對遠程設(shè)備的監(jiān)控和專家支持。遠程監(jiān)控軟件的編寫采用成熟的套接字編程,實現(xiàn)了軟件面向設(shè)備、面向功能量身定制。其模塊化設(shè)計又方便了未來新功能的加入。
基于互聯(lián)網(wǎng)絡(luò)遠程監(jiān)控的開發(fā)已成為目前國內(nèi)外的研究熱點之一。監(jiān)控網(wǎng)絡(luò)的Internet化是監(jiān)控技術(shù)的一個發(fā)展趨勢,隨著Internet和監(jiān)控技術(shù)的發(fā)展,這兩個網(wǎng)絡(luò)必將能夠更好地結(jié)合,基于Internet網(wǎng)絡(luò)的遠程監(jiān)控系統(tǒng)也必將會得到迅速發(fā)展。
編輯:何世平