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