APP下载

图书馆服务器远程管理系统的设计与实现

2009-07-15陈顺平周前伟

现代情报 2009年1期
关键词:系统设计客户端

尹 锋 陈顺平 周前伟

〔摘 要〕提出了一种基于客户机/服务器模式的图书馆服务器远程管理系统的设计方法,它采用WinSocket信息访问技术,设计出客户端和服务器端两个子系统,给出了数据流图、实体关系图、功能模块图和程序流程图及其部分关键代码。系统可在机房无人值守时对服务器进行远程监控和维护,保障网络系统的正常运行。

〔关键词〕服务器远程管理;WinSocket;客户端/服务器模式;系统设计

〔中图分类号〕G250.71 〔文献标识码〕B 〔文章编号〕1008-0821(2009)01-0078-04

Design and Realization of Server Remote Management System of Library

Yin Feng Chen Shunping Zhou Qianwei

(Library,Changsha University,Changsha 410003,China)

〔Abstract〕A design method of remote management system of library server which based C/S model was introduced in this paper.Two subsystem which included client system and server system by using winsocket technology was designed.Otherwise,the data flow graph and the entity relational graph,the functional module chart and the program flow diagram and the part essential code were given in this paper.The server could be monitored and maintenanced when nobody in computer room in order to ensure normal operation of network.

〔Key words〕server remote management;WinSocket;C/S;system design

目前远程控制技术显得越来越重要[1]。如:远程计算机维护、移动办公、远程教学等等。高校图书馆服务器储藏了大量丰富的数字资源,维护其正常运行非常重要。利用远程管理技术可在机房无人值守时对服务器进行监控和维护,以满足广大读者查询文献信息的需要[2]。本文利用基于TCP/IP网络协议的Socket通信技术设计了一个远程服务器管理系统,能够有效监控服务器的运行状态,确保图书馆信息网络系统的正常服务。

1 系统开发原理

本文采用Microsoft Visual C++ 6.0作为开发工具,因为VC++ 6.0中有关网络通信的Socket API函数丰富,功能强大,完全能够实现设计要求[3]

Socket(套接字)的原意是插座。在Socket下编程,应用程序一旦申请到一个Socket,就相当于获得一个与其他应用程序通信的输入输出接口,而该应用程序到底与哪个应用程序通信,取决于其IP地址[4]。执行跨机应用进程时要在网络的每一端建立套接字,2个套接字之间建立连接后,就可以通過套接字的“读”、“写”操作实现网络通信功能。Socket接口介于应用程序与硬件之间,它可以提供标准函数以符合不同的网络硬件规格[5]

对Socket的理解可以简化为:它是封装了数据流(Stream)的从机器到机器的一条软接线。通过这条软接线,并借助于线两端的收发程序,网络上的机器间实现了信息的交流与互通。分离在服务器端和客户端的应用程序可以通过调用Socket接口来执行预定的功能。所以,Socket接口的介入使得开发分布式应用程序变得更为简单。

套接字(socket)在网络软件设计中有着极大的应用。如果把机器比作房间,那么创建了Socket(套接字)的程序就是房间的后门[6]。只要了解该Socket接收数据的协议(后门的钥匙),就可以轻松地打开房门而进入该房间。为了网络信息服务的安全,我们有必要在服务器端控制来自客户的信息访问行为。Socket正是迎合这种需求而被广泛应用的一种网络信息访问技术。

2 系统分析

2.1 数据流分析

系统的数据传递(流动)是以建立了连接的客户端和服务器端为前提的。服务器端程序运行后时刻处于监听状态,一旦有客户端的连接请求,它就会去接收,并生成一个与来访客户端传送信息的Socket通信接口。利用这一特性,我们可以在客户端界面设计一些按钮,设置好自己感兴趣的各种服务器信息参数,然后点击按钮要求服务器执行一些远程操作,就如同在本地操作服务器一样。点击事件发生后,客户端捕捉这一消息并记录下来,然后生成相应的命令消息并保存于临时缓冲区。当协议要发送信息时,就把临时缓冲区的内容放到缓冲区并完成发送。服务器端通过协议把客户端发送过来的内容收存到接收缓冲区,然后分析缓冲区内的命令参数,进行相应的处理。其执行结果反馈给客户端显示。这样,一次通信过程就顺利完成了。下面是系统的数据流图(图1)。

2.2 实体关系分析

系统的实体可分为客户端和服务端两个。双方都有接收/发送缓冲区,通信用的Socket接口,通信端口等。不同的是,服务端有一个监听用的Socket对象、IP地址、命令解析器等;客户端有命令请求接收器(也叫消息池),并且一个服务端可以同时连接多个与之匹配的相应客户端。因此它们之间的关系是一对多的关系。系统的基本ER图如图2所示。

3 系统设计与实现

3.1 系统结构设计

系统分为4个模块,即管理员登录模块,文件上传、下载模块,进程管理模块和显示服务器参数模块。主要采用Winsocket编程接口来实现客户端和服务器之间的通信,用到的数据结构有文件属性结构、进程信息结构、鼠标信息结构等。系统要求先运行服务端程序,服务端程序主要是用SDK开发,没有具体的界面,是隐藏运行的。它有一个总(入口)开关函数负责客户端发送的命令消息的解析分解和分发处理。客户端有用户登录界面,使用者输入合法的用户名和密码才能登录到客户端,接下来才有可能实现对服务器的有效控制。菜单命令接口有文件上传、下载,运行服务器上的程序或者打开文件等。

管理员登录模块主要是验证用户身份的合法性。文件上传和下载是有效的管理服务器资源的一个最基本的途径。进程管理模块的主要功能是在本地客户端上用一个窗口显示远程服务器端上运行者的进程,并能对进程进行实时的观察监控,能对进程进行一些相应的管理,如暂停、结束等操作,能向服务器的屏幕上写一些文本信息,能控制服务器端鼠标的锁定与解锁,驾驭服务器上相关程序、文件的打开或者运行。显示服务器参数模块主要是显示当前正在运行的系统服务器端的一些计算机情况和操作系统信息等等,基本上是一些与远程服务器状态息息相关的的参数信息。

系统实现的主要技术难点在于怎样定义合理的数据结构来完成各种信息的传递与接收,因为文件的上传、下载涉及到文件格式的一致性问题。系统功能模块如图3所示。

3.2 客户端设计

客户端设计思路如流程图(图4)所示。

客户端部分关键代码如下:

void CZclientDlg::OnBtnProcess()

{ ∥进程管理按钮点击事件消息响应函数

UpdateData(TRUE);

BeginWaitCursor();

if(!pProcessDlg)

{ pProcessDlg=new CProcessManageDlg(this);

pProcessDlg->Create(IDD_DIALOG_PROCESSMANAGER,this);

pProcessDlg->ShowWindow(SW_HIDE);

}

else

{ pProcessDlg->m_ctlProcess.ResetContent(); }

strcpy(chrMission,″ ″);∥为命令留出一位(见readme文件)

chrMission[0]=16;∥设置命令

if(!ConnectSocket())

{ AfxMessageBox(″无法连接″);

return;

}

send(sktClient,chrMission,300,0);

MyProcessInfo ProcessInfo;

recv(sktClient,(char *)&ProcessInfo;,sizeof(MyProcessInfo),0);

int nprocesscnt=0;∥统计服务器上的进程个数

while(ProcessInfo.bIsNext)

{ nprocesscnt++;

int index=pProcessDlg->m_ctlProcess.AddString(ProcessInfo.szExeFile);

pProcessDlg->m_ctlProcess.SetItemData(index,ProcessInfo.th32ProcessID);

recv(sktClient,(char *)&ProcessInfo;,sizeof(MyProcessInfo),0);

}

char buffer[20];

itoa(nprocesscnt,buffer,10);∥把整型进程数转换成CString类型

pProcessDlg->SetDlgItemText(IDC_EDIT_COUNT,buffer);

pProcessDlg->ShowWindow(SW_SHOW);

pProcessDlg->SetActiveWindow();

pProcessDlg->SetFocus();

pProcessDlg->pDlg=this;

}

3.3 服务端设计

服务端程序要先于客户端程序运行,它负责监听客户端的连接请求和服务请求,为每一个有访问(这里具体为控制和管理)需求的客户端提供一个通信接口(这里具体为一个Socket对象),預备工作做完了,之后就是相互之间的数据、消息等的发送和接收,以及命令的执行和结果的反馈。服务端设计思路如流程图(图5)所示。由于篇幅所限,代码略去。

4 结 语

以上介绍了服务器远程管理系统的设计思路及其过程。本文设计的客户端是有具体运行界面的,主要用于实施各种对远程服务器的操作,比如终止可疑进程的运行,打开服务器上的文件或运行应用程序等。服务器端程序是一个隐藏运行的后台进程,主要技术用到了基于TCP/IP协议的WinSock网络编程接口,利用它可以与远程计算机建立连接,并实现向服务器屏幕发送消息、捕捉屏幕、文件传输和进程管理等功能。客户端可以实时了解当前表征服务器的运行状态的一些参数,如磁盘和内存等物理硬件的使用情况,当前运行的进程的有用信息,CPU使用率等。应用本文介绍的原理及方法,可设计出适用一般网络管理的服务器远程控制系统。

参考文献

[1]朱晓蕾,余达太,孙昌国,等.基于客户/服务器模式的远程控制系统[J].计算机工程与设计,2004,25(5):51-53.

[2]孙鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2006:523-556.

[3]马安鹏.Visual C++ 6程序设计导学[M].北京:清华大学出版社,2002:180-200.

[4]雷斌,等.Visual C++ 6.0网络编程技术[M].北京:人民邮电出版社,2000:33-43.

[5]陈伟,等.Visual C++网络高级编程[M].北京:人民邮电出版社,2001:19-31,69-74.

[6]谭术,郭聪辉.远程控制与攻击技术揭秘[M].北京:家庭电脑世界出版社,2004:117-145,189-194.

猜你喜欢

系统设计客户端
如何看待传统媒体新闻客户端的“断舍离”?
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
基于Vanconnect的智能家居瘦客户端的设计与实现
大枢纽 云平台 客户端——中央人民广播电台的探索之路
客户端空间数据缓存策略