APP下载

基于Socket网络编程的服务器远程监控系统的实现

2015-06-28吕晓军程清波刘小燕

铁路计算机应用 2015年1期
关键词:服务器端命令客户端

詹 璇,吕晓军,程清波,刘小燕,李 明

(中国铁道科学研究院 电子计算技术研究所,北京 100081)

基于Socket网络编程的服务器远程监控系统的实现

詹 璇,吕晓军,程清波,刘小燕,李 明

(中国铁道科学研究院 电子计算技术研究所,北京 100081)

本文基于TCP/IP协议,利用Socket网络编程接口技术,在客户端/服务器模式下,设计了远程服务器监控系统,实现了对服务器性能的监测和对服务器的远程控制,最后给出了系统的运行结果。

TCP/IP;Socket;远程监控;服务器

随着计算机应用的普及和现代信息技术的快速发展,应用服务器在计算机应用的各个领域起着至关重要的作用,应用服务器的安全与工业控制系统的运行密切相关。应用服务器是实现中间层的方式,为工业控制系统提供一个高效、可靠的运行平台,应用服务器实现了客户端的业务逻辑和基础服务,如数据访问、负载均衡、事务控制、安全机制和失效恢复等服务。因此,有必要对应用服务器的性能等各方面进行监控。另外,对其工作状况进行远程监测和控制,不仅可以方便设备管理者随时了解设备的工作状态,设备出现异常时主动报警,便于及时维修,而且还可以拓宽设备的服务范围,提高工作性能,延长使用寿命。

1 服务器远程监控系统的组成和架构

服务器远程监控系统包括对服务器的远程监测、服务器远程控制和服务管理。其中,服务器远程监测主要是对服务器的CPU、内存、网络数据包进行实时监测,远程控制是对服务器的进程、系统等进行远程控制,服务管理是监测服务中间件运行状态和对服务中间件进行远程操作。如图1所示。

图1 服务器远程监控系统的组成

服务器远程监控系统是一个 C/S 模式的软件,在服务器上安装 ServerSpy.exe 后主动连接客户端,可以支持多台客户端进行监控。如图2所示。

图2 服务器远程监控系统架构图

2 服务器远程监控系统设计

2.1 通信模式设计

服务器端和客户端之间的网络通信是实现各种功能的前提,客户端发送指令,服务端接收指令并响应。本系统是在 Delphi7 环境下开发而成,Delphi是建立在原来的 Windows Socket库函数的基础上,并进行了一系列的包装,对相关的功能进行了封装,从而使编程变得更加简单。

服务器端和客户端的网络通信利用 Delphi的INDY(Internet Direct)组件,INDY 是一套开放源代码的 Internet控件集,支持大部分流行的 Internet协 议, 包 括 TCP、UDP、DNS、ICMP 等。 本 系统主要用到了 INDY 的 idTCPServer和 idTCPClient两个组件。idTCPClient组件封装一个完整的 TCP 客户端程序,支持 Socket。使用 TIdTCPClient组件要设置它的 IP 和 Port属性,然后调用 Connect方法。idTCPServer组件实现了一个多线程的服务端,它使用一个或者多个线程来接收客户端的连接,并联合idThreadMgr分配专门的线程来处理每一个客户端和服务器的连接。在线程中维持一个激活 ThreadClass实例的列表。idTCPServer的工作原理如图 3 所示。

图3 idTCPServer的工作原理

因为 INDY 组件是基于 Socket阻塞工作模式,阻塞套接字调用在完成工作之后才返回,如果在程序主线程中进行此类调用,应用程序将不能正常处理用户界面消息,从而造成了用户界面的“死锁”。

在客户端添加一个 TidAntiFreeze 组件就可以避免用户界面“死锁”的发生,TIdAntiFreeze 在INDY 内 部 定时中 断 对栈的 调 用, 并在中 断 期间调用 Application.ProcessMessages 方法处理消息,而 外 部 的 INDY 调 用 继 续 保 存 阻 塞 状 态, 就 好 像TIdAntiFreeze 对象不存在一样。这样界面“死锁”的问题就可以得到完满的解决。

在客户端添加 idTCPClient组件,在服务器端添加 idTCPServer组件,它们之间就形成了 TCP 通信,具体客户端和服务器端之间的通信如图4所示。

图4 客户端和服务器端的通信

2.2 客户端与服务器端程序设计

客户端在执行每个监测或者控制请求时,定义一个字符串链表,将请求的每个命令加入链表中,并在链表中逐个编号,例如:查看进程的命令编号为22,关闭某个可疑进程的命令编号为 23。然后发送命令,将客户端地址和发送命令编号作为参数发送给服务器端,服务器端来执行相应的操作。

服务器端在接收到客户端发送来的命令时,首先进行服务探测,即判断是哪个客户端发送来的消息,识别客户端发送来的主机 IP 地址和端口号,与它建立建立,开始线程的执行。在线程执行时,先判断命令号,即客户端发送的命令编号,然后执行相应的操作。

2.3 运行结果

运行结果如下图所示。下面展示了服务器的部分监测结果,图5为CPU使用情况,图6为内存使用情况,图7为进程管理情况,图8为服务管理。

3 结束语

本文介绍了在客户端/服务器模式下的远程服务器监控系统,该系统基于 TCP/IP 协议,利用 Socket网络编程接口技术,实现了对服务器性能的监测和对服务器的远程控制,详细介绍了服务器与客户端

图5 CPU使用情况

图6 内存使用情况

图7 进程管理

通信模式设计,客户端与服务器端设计,最后给出了运行结果。

[1] 蒋东兴,林鄂华 . Windows Sockets 网络程序设计大全 [M].北京 :清华大学出版社,1999.

[2] RICHARD S W. TCP/IP 详解,卷 1 :协议范建华 [M].胥光辉,张 涛,等,译 . 北京 :机械工业出版社,2000.

[3] 李存斌, 汪 兵 . Delphi深度编程及项目应用开发 [M]. 北京 :中国水利水电出版社,2002 :180-188.

[4] 康鸿儒,陈 虹,曹 卫 .基于 Internet的远程操作技术研究 [J].工业控制计算机,2002,15(1):25-29.

[5] 杨志红,徐 袭,江汉红 ,等 .基于嵌入式肉络技术构建远程监测系统 [J].测控技术,2002,21(8):47-48.

[6] 李小海,王旭永 . 基于 WWW 的机器人远程控制的关键技术及典型实现 [J].工业控制计算机,2000,13(2):51-53.

[7] 王晓峰,吴平东,等 . 基于因特网的远程控制系统控制算法的研究 [J]. 计算机应用研究,2003,20(4):141-143.

[8] 顾洪军,张 佐,吴秋峰 . 网络控制系统的实时特性分析及数据传输技术 [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

詹 璇,研究实习员;吕晓军,副研究员。

猜你喜欢

服务器端命令客户端
只听主人的命令
Linux环境下基于Socket的数据传输软件设计
如何看待传统媒体新闻客户端的“断舍离”?
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
移防命令下达后
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
这是人民的命令