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

上传人:b****1 文档编号:722086 上传时间:2022-10-12 格式:DOCX 页数:9 大小:218.69KB
下载 相关 举报
基于Socket网络编程的服务器远程监控系统的实现.docx_第1页
第1页 / 共9页
基于Socket网络编程的服务器远程监控系统的实现.docx_第2页
第2页 / 共9页
基于Socket网络编程的服务器远程监控系统的实现.docx_第3页
第3页 / 共9页
基于Socket网络编程的服务器远程监控系统的实现.docx_第4页
第4页 / 共9页
基于Socket网络编程的服务器远程监控系统的实现.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

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

《基于Socket网络编程的服务器远程监控系统的实现.docx》由会员分享,可在线阅读,更多相关《基于Socket网络编程的服务器远程监控系统的实现.docx(9页珍藏版)》请在冰豆网上搜索。

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

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

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

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

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

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

摘要:

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

关键词:

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

ImplementationofServerRemoteMonitoringSystemBasedonSocketNetworkProgramming

ZhanXuan,LvXiaojun,ChengQingbo,LiuXiaoyan,LiMing

(InstituteofComputingTechnologies,ChinaAcademyofRailwaySciences,Beijing100081,China)

Abstract:

BasedontheTCP/IPprotocol,socketprogramminginterfacetechnologyisusedinthispaper,andaremoteservermonitoringsystemisdesignedinC/Smode,thustheperformancemonitoringandservercontrollingisimplemented,finally,theresultisdescribedinthispaper.

KeyWords:

TCP/IP;Socket;RemoteMonitoring;Server

0引言

随着计算机应用的普及和现代信息技术的快速发展,应用服务器在计算机应用的各个领域起着至关重要的作用,应用服务器的安全与工业控制系统的运行密切相关。

应用服务器是实现中间层的方式,为工业控制系统提供一个高效、可靠的运行平台,应用服务器实现了客户端的业务逻辑和基础服务,如数据访问、负载均衡、事务控制、安全机制和失效恢复等服务。

因此,有必要对应用服务器的性能等各方面进行监控。

另外,对其工作状况进行远程监测和控制,不仅可以方便设备管理者随时了解设备的工作状态,设备出现异常时主动报警,便于及时维修,而且还可以拓宽设备的服务范围,提高工作性能,延长使用寿命。

1TCP/IP与Socket介绍

TCP/IP协议的应用开发接口是Socket(套接字),它是TCP/IP网络环境下的编程接口。

它提供了不同主机间进程的双向通信端点,开发Socket的目的是屏蔽网络底层复杂的结构和协议。

利用它可以构造任意的跨操作系统、跨网络协议的分布式处理系统。

Socket是面向客户—服务器的模型,客户端随机申请一个Socket,系统为之分配一个随机的Socket号;服务器拥有全局公认的Socket号,任何客户都可以向它发出连接请求和传送信息请求。

在进程开始通信之前,双方必须各自创建一个端点,否则是没有办法建立联系的。

如下图所示介绍了Socket的客户—服务器模型时序图。

图1面向连接的客户—服务器模型时序图

首先,服务器进程会在约定的端口开启一个Socket,来进行监听,Accept()循环主要是负责在接受队伍中将每个客户的进程分别取出,在完成连接后产生一个新的Socket,这时候,服务器将会产生一个新的子进程对来自于客户的请求进行专门的处理,在处理完毕后再接着处理下一个客户请求。

因为服务器端进行监听的Socket对新的子进程没有效用,所以新的子进程会将该Socket关闭,通过新生成的Socket实现与客户端的交互,直至客户端将连接关闭,新的子进程才会终止。

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

服务器远程监控系统包括对服务器的远程监测、服务器远程控制和服务管理。

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

如下图所示:

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

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

如下图3所示:

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

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

3.1通信模式设计

服务器端和客户端之间的网络通信是实现各种功能的前提,客户端发送指令,服务端接收指令并响应。

本系统是在Delphi7环境下开发而成,Delphi是建立在原来的WindowsSocket库函数的基础上,并进行了一系列的包装,对相关的功能进行了封装,从而使编程变得更加简单。

其中服务器端和客户端的网络通信利用了Delphi的Indy组件,Indy的全名是是InternetDirect,这是一套开放源代码的Internet控件集,支持大部分流行的Internet协议,包括TCP、UDP、DNS、ICMP等。

本系统主要用到了INDY的idTCPServer和idTCPClient两个组件。

idTCPClient组件封装一个完整的TCP客户端程序,支持Socket。

使用TIdTCPClient组件要设置它的IP和Port属性,然后调用Connect方法。

idTCPServer组件实现了一个多线程的服务端,它使用一个或者多个线程来接收客户端的连接,并联合idThreadMgr分配专门的线程来处理每一个客户端和服务器的连接。

在线程中维持一个激活ThreadClass实例的列表。

下面给出了idTCPServer的工作原理:

图4idTCPServer的工作原理

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

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

这样界面“死锁”的问题就可以得到完满的解决。

在客户端添加idTCPClient组件,在服务器端添加idTCPServer组件,这样它们之间就形成了TCP通信,具体客户端和服务器端之间的通信如下图:

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

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

客户端在执行每个监测或者控制请求时,定义一个字符串链表,将请求的每个命令加入链表中,并在链表中逐个编号,例如查看进程的命令编号为22,关闭某个可疑进程的命令编号为23。

然后发送命令,将客户端地址和发送命令编号作为参数发送给服务器端,服务器端来执行相应的操作。

procedureTMainForm.BtnTerminateProcClick(Sender:

TObject);//关闭进程

var

StrCmd:

TStrings;

begin

if(LVProc.Selected=nil)then

begin

ShowMessage('请选择你要关闭的进程!

');

exit;

end;

StrCmd:

=TStringList.Create;

StrCmd.Add('23|'+LVProc.Selected.SubItems.Strings[1]);

SendCommand(StrCmd,CBClientP.Text);

end;

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

在线程执行时,先判断命令号,即客户端发送的命令编号,然后执行相应的操作。

try

StrReceived:

=AThread.Connection.ReadLn(#10#10);

StrReceived:

=Trim(StrReceived);

StrMsg:

=TStringList.Create;

StrMsg.AddStrings(ExtractStr(StrReceived,'|'));

CmdId:

=StrToInt('$'+StrMsg[0]);

MonThreadId:

=AThread;

caseCmdIdof

$0:

//CONNECTSTART,服务探测,连接到探测器

begin

TCPSender.Host:

=AThread.Connection.Socket.Binding.PeerIP;

TCPSender.Port:

=StrToInt(StrMsg[1]);

TCPSender.Connect();

if(TCPSender.Connected=false)then

begin

exit;

end;

if(SenderThread.Terminated)then

SenderThread.Execute

elseif(SenderThread.Suspended)then

SenderThread.Resume;

end;

3.3运行结果

运行结果如下图所示。

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

图6CPU使用情况

图7内存使用情况

端设计,最后给出了运行结果。

参考文献:

[1]蒋东兴,林鄂华.WindowsSockets网络程序设计大全[M].北京:

清华大学出版社,1999.

[2]范建华,胥光辉,张涛等译.RICHARDSW.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.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1