詹 璇,呂曉軍,程清波,劉小燕,李 明
(中國(guó)鐵道科學(xué)研究院 電子計(jì)算技術(shù)研究所,北京 100081)
基于Socket網(wǎng)絡(luò)編程的服務(wù)器遠(yuǎn)程監(jiān)控系統(tǒng)的實(shí)現(xiàn)
詹 璇,呂曉軍,程清波,劉小燕,李 明
(中國(guó)鐵道科學(xué)研究院 電子計(jì)算技術(shù)研究所,北京 100081)
本文基于TCP/IP協(xié)議,利用Socket網(wǎng)絡(luò)編程接口技術(shù),在客戶(hù)端/服務(wù)器模式下,設(shè)計(jì)了遠(yuǎn)程服務(wù)器監(jiān)控系統(tǒng),實(shí)現(xiàn)了對(duì)服務(wù)器性能的監(jiān)測(cè)和對(duì)服務(wù)器的遠(yuǎn)程控制,最后給出了系統(tǒng)的運(yùn)行結(jié)果。
TCP/IP;Socket;遠(yuǎn)程監(jiān)控;服務(wù)器
隨著計(jì)算機(jī)應(yīng)用的普及和現(xiàn)代信息技術(shù)的快速發(fā)展,應(yīng)用服務(wù)器在計(jì)算機(jī)應(yīng)用的各個(gè)領(lǐng)域起著至關(guān)重要的作用,應(yīng)用服務(wù)器的安全與工業(yè)控制系統(tǒng)的運(yùn)行密切相關(guān)。應(yīng)用服務(wù)器是實(shí)現(xiàn)中間層的方式,為工業(yè)控制系統(tǒng)提供一個(gè)高效、可靠的運(yùn)行平臺(tái),應(yīng)用服務(wù)器實(shí)現(xiàn)了客戶(hù)端的業(yè)務(wù)邏輯和基礎(chǔ)服務(wù),如數(shù)據(jù)訪(fǎng)問(wèn)、負(fù)載均衡、事務(wù)控制、安全機(jī)制和失效恢復(fù)等服務(wù)。因此,有必要對(duì)應(yīng)用服務(wù)器的性能等各方面進(jìn)行監(jiān)控。另外,對(duì)其工作狀況進(jìn)行遠(yuǎn)程監(jiān)測(cè)和控制,不僅可以方便設(shè)備管理者隨時(shí)了解設(shè)備的工作狀態(tài),設(shè)備出現(xiàn)異常時(shí)主動(dòng)報(bào)警,便于及時(shí)維修,而且還可以拓寬設(shè)備的服務(wù)范圍,提高工作性能,延長(zhǎng)使用壽命。
服務(wù)器遠(yuǎn)程監(jiān)控系統(tǒng)包括對(duì)服務(wù)器的遠(yuǎn)程監(jiān)測(cè)、服務(wù)器遠(yuǎn)程控制和服務(wù)管理。其中,服務(wù)器遠(yuǎn)程監(jiān)測(cè)主要是對(duì)服務(wù)器的CPU、內(nèi)存、網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行實(shí)時(shí)監(jiān)測(cè),遠(yuǎn)程控制是對(duì)服務(wù)器的進(jìn)程、系統(tǒng)等進(jìn)行遠(yuǎn)程控制,服務(wù)管理是監(jiān)測(cè)服務(wù)中間件運(yùn)行狀態(tài)和對(duì)服務(wù)中間件進(jìn)行遠(yuǎn)程操作。如圖1所示。
圖1 服務(wù)器遠(yuǎn)程監(jiān)控系統(tǒng)的組成
服務(wù)器遠(yuǎn)程監(jiān)控系統(tǒng)是一個(gè) C/S 模式的軟件,在服務(wù)器上安裝 ServerSpy.exe 后主動(dòng)連接客戶(hù)端,可以支持多臺(tái)客戶(hù)端進(jìn)行監(jiān)控。如圖2所示。
圖2 服務(wù)器遠(yuǎn)程監(jiān)控系統(tǒng)架構(gòu)圖
2.1 通信模式設(shè)計(jì)
服務(wù)器端和客戶(hù)端之間的網(wǎng)絡(luò)通信是實(shí)現(xiàn)各種功能的前提,客戶(hù)端發(fā)送指令,服務(wù)端接收指令并響應(yīng)。本系統(tǒng)是在 Delphi7 環(huán)境下開(kāi)發(fā)而成,Delphi是建立在原來(lái)的 Windows Socket庫(kù)函數(shù)的基礎(chǔ)上,并進(jìn)行了一系列的包裝,對(duì)相關(guān)的功能進(jìn)行了封裝,從而使編程變得更加簡(jiǎn)單。
服務(wù)器端和客戶(hù)端的網(wǎng)絡(luò)通信利用 Delphi的INDY(Internet Direct)組件,INDY 是一套開(kāi)放源代碼的 Internet控件集,支持大部分流行的 Internet協(xié) 議, 包 括 TCP、UDP、DNS、ICMP 等。 本 系統(tǒng)主要用到了 INDY 的 idTCPServer和 idTCPClient兩個(gè)組件。idTCPClient組件封裝一個(gè)完整的 TCP 客戶(hù)端程序,支持 Socket。使用 TIdTCPClient組件要設(shè)置它的 IP 和 Port屬性,然后調(diào)用 Connect方法。idTCPServer組件實(shí)現(xiàn)了一個(gè)多線(xiàn)程的服務(wù)端,它使用一個(gè)或者多個(gè)線(xiàn)程來(lái)接收客戶(hù)端的連接,并聯(lián)合idThreadMgr分配專(zhuān)門(mén)的線(xiàn)程來(lái)處理每一個(gè)客戶(hù)端和服務(wù)器的連接。在線(xiàn)程中維持一個(gè)激活 ThreadClass實(shí)例的列表。idTCPServer的工作原理如圖 3 所示。
圖3 idTCPServer的工作原理
因?yàn)?INDY 組件是基于 Socket阻塞工作模式,阻塞套接字調(diào)用在完成工作之后才返回,如果在程序主線(xiàn)程中進(jìn)行此類(lèi)調(diào)用,應(yīng)用程序?qū)⒉荒苷L幚碛脩?hù)界面消息,從而造成了用戶(hù)界面的“死鎖”。
在客戶(hù)端添加一個(gè) TidAntiFreeze 組件就可以避免用戶(hù)界面“死鎖”的發(fā)生,TIdAntiFreeze 在INDY 內(nèi) 部 定時(shí)中 斷 對(duì)棧的 調(diào) 用, 并在中 斷 期間調(diào)用 Application.ProcessMessages 方法處理消息,而 外 部 的 INDY 調(diào) 用 繼 續(xù) 保 存 阻 塞 狀 態(tài), 就 好 像TIdAntiFreeze 對(duì)象不存在一樣。這樣界面“死鎖”的問(wèn)題就可以得到完滿(mǎn)的解決。
在客戶(hù)端添加 idTCPClient組件,在服務(wù)器端添加 idTCPServer組件,它們之間就形成了 TCP 通信,具體客戶(hù)端和服務(wù)器端之間的通信如圖4所示。
圖4 客戶(hù)端和服務(wù)器端的通信
2.2 客戶(hù)端與服務(wù)器端程序設(shè)計(jì)
客戶(hù)端在執(zhí)行每個(gè)監(jiān)測(cè)或者控制請(qǐng)求時(shí),定義一個(gè)字符串鏈表,將請(qǐng)求的每個(gè)命令加入鏈表中,并在鏈表中逐個(gè)編號(hào),例如:查看進(jìn)程的命令編號(hào)為22,關(guān)閉某個(gè)可疑進(jìn)程的命令編號(hào)為 23。然后發(fā)送命令,將客戶(hù)端地址和發(fā)送命令編號(hào)作為參數(shù)發(fā)送給服務(wù)器端,服務(wù)器端來(lái)執(zhí)行相應(yīng)的操作。
服務(wù)器端在接收到客戶(hù)端發(fā)送來(lái)的命令時(shí),首先進(jìn)行服務(wù)探測(cè),即判斷是哪個(gè)客戶(hù)端發(fā)送來(lái)的消息,識(shí)別客戶(hù)端發(fā)送來(lái)的主機(jī) IP 地址和端口號(hào),與它建立建立,開(kāi)始線(xiàn)程的執(zhí)行。在線(xiàn)程執(zhí)行時(shí),先判斷命令號(hào),即客戶(hù)端發(fā)送的命令編號(hào),然后執(zhí)行相應(yīng)的操作。
2.3 運(yùn)行結(jié)果
運(yùn)行結(jié)果如下圖所示。下面展示了服務(wù)器的部分監(jiān)測(cè)結(jié)果,圖5為CPU使用情況,圖6為內(nèi)存使用情況,圖7為進(jìn)程管理情況,圖8為服務(wù)管理。
本文介紹了在客戶(hù)端/服務(wù)器模式下的遠(yuǎn)程服務(wù)器監(jiān)控系統(tǒng),該系統(tǒng)基于 TCP/IP 協(xié)議,利用 Socket網(wǎng)絡(luò)編程接口技術(shù),實(shí)現(xiàn)了對(duì)服務(wù)器性能的監(jiān)測(cè)和對(duì)服務(wù)器的遠(yuǎn)程控制,詳細(xì)介紹了服務(wù)器與客戶(hù)端
圖5 CPU使用情況
圖6 內(nèi)存使用情況
圖7 進(jìn)程管理
通信模式設(shè)計(jì),客戶(hù)端與服務(wù)器端設(shè)計(jì),最后給出了運(yùn)行結(jié)果。
[1] 蔣東興,林鄂華 . Windows Sockets 網(wǎng)絡(luò)程序設(shè)計(jì)大全 [M].北京 :清華大學(xué)出版社,1999.
[2] RICHARD S W. TCP/IP 詳解,卷 1 :協(xié)議范建華 [M].胥光輝,張 濤,等,譯 . 北京 :機(jī)械工業(yè)出版社,2000.
[3] 李存斌, 汪 兵 . Delphi深度編程及項(xiàng)目應(yīng)用開(kāi)發(fā) [M]. 北京 :中國(guó)水利水電出版社,2002 :180-188.
[4] 康鴻儒,陳 虹,曹 衛(wèi) .基于 Internet的遠(yuǎn)程操作技術(shù)研究 [J].工業(yè)控制計(jì)算機(jī),2002,15(1):25-29.
[5] 楊志紅,徐 襲,江漢紅 ,等 .基于嵌入式肉絡(luò)技術(shù)構(gòu)建遠(yuǎn)程監(jiān)測(cè)系統(tǒng) [J].測(cè)控技術(shù),2002,21(8):47-48.
[6] 李小海,王旭永 . 基于 WWW 的機(jī)器人遠(yuǎn)程控制的關(guān)鍵技術(shù)及典型實(shí)現(xiàn) [J].工業(yè)控制計(jì)算機(jī),2000,13(2):51-53.
[7] 王曉峰,吳平東,等 . 基于因特網(wǎng)的遠(yuǎn)程控制系統(tǒng)控制算法的研究 [J]. 計(jì)算機(jī)應(yīng)用研究,2003,20(4):141-143.
[8] 顧洪軍,張 佐,吳秋峰 . 網(wǎng)絡(luò)控制系統(tǒng)的實(shí)時(shí)特性分析及數(shù)據(jù)傳輸技術(shù) [J]. 計(jì)算機(jī)工程與應(yīng)用,2001(6):38-41.
責(zé)任編輯 徐侃春
Implementation of Server Remote Monitoring System based on Socket network programming
ZHAN Xuan, LV Xiaojun, CHENG Qingbo, LIU Xiaoyan, LI Ming
( Institute of Computing Technologies, China Academy of Railway Sciences, Beijing 100081, China )
Based on the TCP / IP protocol, Socket network programming interface technology was used in this paper. The Remote Server Monitoring System was designed in C/S mode, thus the performance monitoring and server controlling were implemented. The operation result of the System was described in this paper.
TCP/IP; Socket; remote monitoring; server
U29 ∶ TP39
:A
1005-8451(2015)01-0026-04
2014-07-31
詹 璇,研究實(shí)習(xí)員;呂曉軍,副研究員。