局域网监控程序的设计课程设计.docx

上传人:b****7 文档编号:23960991 上传时间:2023-05-22 格式:DOCX 页数:16 大小:94.16KB
下载 相关 举报
局域网监控程序的设计课程设计.docx_第1页
第1页 / 共16页
局域网监控程序的设计课程设计.docx_第2页
第2页 / 共16页
局域网监控程序的设计课程设计.docx_第3页
第3页 / 共16页
局域网监控程序的设计课程设计.docx_第4页
第4页 / 共16页
局域网监控程序的设计课程设计.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

局域网监控程序的设计课程设计.docx

《局域网监控程序的设计课程设计.docx》由会员分享,可在线阅读,更多相关《局域网监控程序的设计课程设计.docx(16页珍藏版)》请在冰豆网上搜索。

局域网监控程序的设计课程设计.docx

局域网监控程序的设计课程设计

局域网监控程序的设计

摘要

在当今信息化高度发展的今天,局域网管理的重要性更加突出,建立一个强有力的局域网监控系统是很有必要的。

局域网监控程序,应用于一般小规模的公司内部局域网,方便公司对员工的电脑进行监控管理,防止员工在工作时间利用公司电脑做与工作无关的事,从而提高工作效率。

本局域网监控程序采用了Delphi7开发,能显示局域网中所有活动主机IP,能对目标主机进行进程管理和连接监视,当发现目标主机异常时能发消息给目标主机予以提醒,可以控制目标主机的重启、注销、关机,并实行屏幕抓取,发现异常情况可锁定目标主机。

关键词:

局域网;Delphi;监控

DesignofLocalAreaNetworkMonitoringSoftware

Abstract

Withthedevelopmentoftechnology,localareanetworkbecomesmoreandmoreimportant.Itisnecessarytodevelopalocalareanetworkmonitoringsoftware.Localareanetworkmonitoringsoftwareismainlyappliedinsmallscalecompanyinlocalareanetwork,whichhelpscompanymonitorandmanagecomputerusedbystuffandavoidsstuffdothingsforeigntowork.

ThelocalareanetworkmonitoringsoftwareisbasedonDelphi7.Itprovidesseriesfunctionalities,suchasshowingIPforallactivehostcomputersinthelocalareanetwork,managingprocessandmonitoringconnectionfordestinationhost,remindingexceptionbysendingmessagetodestinationhostwhenexceptionoccurs,controllingoperationsofreset,loggingoutandshuttingdownfordestinationhost,printingscreen,andlockingdestinationhostwhenexceptionoccurs.

Keywords:

localareanetwork;Delphi;monitoring

目录

论文总页数:

18页

1引言1

1.1本课题研究的意义1

1.2本课题的研究方法和思路1

2相关软件和技术原理介绍1

2.1Delphi基础介绍1

2.2TCP简介2

2.3INDY简介2

2.4Socket简介3

3系统设计与实现4

3.1系统架构4

3.2系统设计4

3.2.1运行环境4

3.2.2模块功能4

3.3主要模块设计原理5

3.3.1管理端界面设计5

3.3.2通信模式设计思路6

3.3.3通信原理7

3.3.4通信流程7

3.3.5自定义控制协议标识符10

3.4主要功能的实现12

3.4.1屏幕抓取的实现12

3.4.2进程管理的实现14

结论15

参考文献16

致谢17

声明18

1引言

1.1本课题研究的意义

计算机网络的普及应用已渗透到社会各个层面,给社会带来便利的同时也随之带来的安全和管理问题。

互联网络是一把双刃剑;就如一个企业而言有些员工利用工作时间看新闻、玩游戏、干私活、聊天、泄密公司资料、炒股票、下电影、听歌曲、甚至在公司网上边拿老板工资边找工作等等。

不仅仅消耗公司资源,更是因为影响公司效率、泄露公司机密、甚至丢失客户资源令人痛心。

而利用局域网网络监控软件这非常有效的管理辅助手段并和企业的内部管理机制结合达到更加事半功倍的效果,已经成为大家的共识。

1.2本课题的研究方法和思路

综合运用以前所学的网络相关知识,尤其是要掌握ObjectPascal语言和网络编程,熟悉Delphi的常用控件,先做好基本的界面框架,再实现每个模块的功能,界面与模块功能之间用创建事件联系起来(网络连接的监控/能对局域网资源进行搜索/显示局域网内所有活动主机的IP地址及主机名/发消息/控制目标主机的重启、注销、关机/实行屏幕抓取/锁定目标主机)调试成功后,最后再把各功能模块集成在一起。

2相关软件和技术原理介绍

2.1Delphi基础介绍

Delphi是Borland公司研制的新一代可视化开发工具,可在Windows3.x、Windows95、WindowsNT等环境下使用。

它拥有一个可视化的集成开发环境(IDE),采用面向对象的编程语言ObjectPascal和基于部件的开发结构框架。

Delphi它提供了100多个可供使用的构件,利用这些部件,开发人员可以快速地构造出应用系统。

开发人员也可以根据自己的需要修改部件或用Delphi本身编写自己的部件。

主要特点如下:

(1)直接编译生成可执行代码,编译速度快。

由于Delphi编译器采用了条件编译和选择链接技术,使用它生成的执行文件更加精炼,运行速度更快。

在处理速度和存取服务器方面,Delphi的性能远远高于其他同类产品。

(2)支持将存取规则分别交给客户机或服务器处理的两种方案,而且允许开发人员建立一个简单的部件或部件集合,封装起所有的规则,并独立于服务器和客户机,所有的数据转移通过这些部件来完成。

这样,大大减少了对服务器的请求和网络上的数据传输量,提高了应用处理的速度。

(3)提供了许多快速方便的开发方法,使开发人员能用尽可能少的重复性工作完成各种不同的应用。

利用项目模板和专家生成器可以很快建立项目的构架,然后根据用户的实际需要逐步完善。

(4)具有可重用性和可扩展性。

开发人员不必再对诸如标签、按钮及对话框等Windows的常见部件进行编程。

Delphi包含许多可以重复使用的部件,允许用户控制Windows的开发效果。

(5)具有强大的数据存取功能。

它的数据处理工具BDE(BorlandDatabaseEngine)是一个标准的中介软件层,可以用来处理当前流行的数据格式,如xBase、Paradox等,也可以通过BDE的SQLLink直接与Sybase、SQLServer、Informix、Oracle等大型数据库连接。

Delphi既可用于开发系统软件,也适合于应用软件的开发。

2.2TCP简介

TCP(TransmissionControlProtocol,传输控制协议)是一个面向连接的协议,它依赖于IP协议。

TCP在两台通信的计算机之间建立一个虚拟的连接,数据可以进行可靠无误的双向交换。

在TCP协议中,两台计算机在通信前先要建立Socket(套接字,即通信端点),每个套接字由本机的IP地址和一个16位的端口号组成,建立连接后,数据都被拆分成小于64k字节的片断,加上数据包头发送出去,到达另一台主机后再重新组装。

当不再需要连接时,必须释放和撤销连接,为下一次传输腾空资源。

TCP为确保数据在传输过程中的可靠性,除规定了数据包的格式外,还具体规定了端对端连接管理的规则,传输数据是策略的约定、拥挤与阻塞控制的规则和定时时间量管理办法等。

这样IP协议束手无策的诸多问题都得到了解决,如数据包失效问题,当TCP发现数据包已经过时,则会要求发送端重新发送;数据接收次序问题,在实际中数据包有可能不能按照原来的先后次序到达,而TCP并不要求接收和发送的次序一致,仍能按照正确的顺序装配好。

2.3INDY简介

INDY的全名是InternetDirect(也叫Winshoes),它是一套开放源代码的Internet控件集,它支持大部分流行的Internet协议,包括TCP、UDP、DNS、ICMP、FINGER、FTP、GOPHER、HTTP、POP3、SMTP、TELNET、WHOIS等,支持BASE64、MD2、MD4、MD5等编解码,提供INTERNET流行协议的客户端和服务器控件。

INDY控件集的客户端和服务器控件都有完整、详细的源代码例程和帮助文件,用户可以根据这些例子,简单方便快速的建造各种服务器程序,例如WEB服务器、TELNET服务器、IRC服务器、TCP、UDP服务器等,而这些服务器都是支持多线程的。

用户也可以很简单的编写出各种客户端程序,例如EMAIL、FINGER、FTP、PING、TELNET等。

INDY是完全基于SOCKET阻塞工作模式的开发库,这是区别于winsock的一大特点,winsock使用的是异步模式(非阻塞模式)阻塞模式具有以下几个比异步模式优越的特点:

编程更简单,可以把所有处理SOCKET的代码放在一起,顺序执行,而不用分散在不同的事件处理代码段里。

更容易在多线程程序里使用,由于阻塞模式的代码可以放在一起,可以很方便的把这些代码包裹在线程里面来使用,而不象异步模式,需要针对不同的事件,设置不同的处理代码。

2.4Socket简介

Socket是建立在传输层协议(主要是TCP和UDP)上的一种套接字规范,最初是由美国加州Berkley大学提出,它定义两台计算机间进行通信的规范(也是一种编程规范),如果说两台计算机是利用一个“通道“进行通信,那么这个“通道“的两端就是两个套接字。

套接字屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了TCP协议软件和实现了套接字规范的计算机之间的通信成为可能。

套接字屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了TCP协议软件和实现了套接字规范的计算机之间的通信成为可能。

对于应用程序来说,它就像一个服务协议插座一样,各种不同的协议,对应不同的端口。

我们可以把套接字看作相应进程上的“门”:

进程把消息发送到网络或从网络接受消息都得经过自身得套接字。

当一个进程想给另一台主机中的另一个进程发送消息是,它就把该消息推出自家的门。

该进程认定在这扇门的另一侧有一个传输设施会把这个消息传输到目的进程的门口。

在服务器进程处于运行状态的情况下,客户进程就能够初始化一个到服务器的TCP连接了,这是通过在客户程序中创建一个套接字对象来完成的,当客户创建了它的套接字对象的时候,它详细说明了服务器进程的地址,也就是,服务器的IP地址和进程的端口号,一旦创建了套接字对象,客户端的TCP就发起一个三次握手,并建立一个和服务器的TCP连接,三次握手对客户和服务器程序来说是完全透明的。

3系统设计与实现

3.1系统架构

局域网监控程序是一个C/S模式的软件,客户端(被监视电脑)运行server.exe后主动连接管理端(服务器),管理端响应连接通过一台主机对多个客户端进行监控操作。

图1监控程序构架图

3.2系统设计

3.2.1运行环境

硬件系统:

1.CPUP42.4

2.内存512M

3.普通网卡

操作系统:

WindowsXP

软件需求:

Dehphi7

3.2.2模块功能

在管理端有13个操作模块分别为允许关机,禁止关机,关机,重启,注销,锁屏,解锁,发送消息,查看屏幕,文件管理,进程管理,连接监视和退出程序。

图2管理端模块功能

3.3主要模块设计原理

3.3.1管理端界面设计

主界面包含了对客户端的所有操作,大体由两部分组成,首先是显示栏,主要显示被监视电脑的电脑名称、IP地址还有使用的何种操作系统,利用Dehphi7自带的位于Win32控件版面的ListView列表视控件建立一个显示栏,这里需要把ViewStyle属性设置为vsReport,因为显示栏需要显示局域网所有连接的被监控电脑,所以必须以详细列表的方式显示,显示的信息可以分成多列。

在ListView中添加3个列分别是电脑名称、IP地址、操作系统。

再在form框体下方添加StatusBar组件用于显示连接是否成功和有几台被监视电脑在线。

最后在form框体右侧添加13个SpeedButton,SpeedButton的Caption属性分别设为允许关机、禁止关机、重启、关机、注销、发送消息、查看屏幕、文件管理、进程管理、连接监视、锁定、解屏、退出程序。

图3界面效果图

3.3.2通信模式设计思路

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

本设计利用Delphi7的网络通信组件INDY来建立客户端与管理端之间的TCP连接,主要用到了INDY的idTCPServer和idTCPClient两个组件。

idTCPClient组件功能:

IdTCPClient封装一个完整的TCP客户端程序,其中包括Sock支持。

IdTCPClient可用作一个执行特殊协议时的父类来使用,许多的INDY客户组件例如IdDayTime、IdEcho、IdFinger、IdFTP、IdGopher、IdHTTP、IdPOP3、IdQUOTO等都是由它派生出来的。

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

idTCPServer组件功能:

IdTCPServer实现一个多线程服务端,TIdTCPServer=class(TIdComponent)。

IdTCPServer封装一个完整的多线程TCP服务端。

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

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

3.3.3通信原理

本设计实现的是一台主机对局域网内的多台主机,采用了INDY的多线程技术,下图显示了idTCPServer的工作原理。

INDY服务器组件idTCPServer创建一个同应用程序主线程分离的监听线程来监听被监视电脑连接请求,对于接受的每一个被监视电脑,都创建一个新的线程来为该被监视提供服务,所有与这一被监视电脑相关的事务都由该线程来处理。

图4idTCPServer的工作原理

3.3.4通信流程

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

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

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

在客户端添加idTCPClient组件,在管理端添加idTCPServer组件,这样它们之间就形成了TCP通信,客户端是在被监视电脑上运行,管理端是在主机上运行面向操作员,具体客户端和管理端之间的通信如下图:

图5通信流程图

客户端从Config.ini获取管理端的IP地址和开放端口(8080),客户端得知IP和端口后便主动向管理端发送连接请求,管理端接受请求与客户端建立连接,管理端想对客户端实施监控操作时,便发送操作指令给客户端,客户端接受指令并在内部解析,客户端得出结果并返回给管理端,管理端在界面上显示出返回的操作结果。

要建立与服务器的连接,应首先要知道服务器的IP地址和开放通信端口,在1024以下的端口号中,很多都已经分配出去了,如FTP的端口为20和21,SMTP的端口是25,WEB服务器的端口为80等,为防止无意间的冲突,选择了8080为客户端的开放通信端口。

在客户端有个Config.ini的服务器配置文件,在文件里输入服务器的主机IP以及服务器开放的通信端口8080,这样就指定好了服务器的IP和端口

begin

filepath:

=ExtractFilePath(Application.ExeName);

inifile:

=TIniFile.Create(filepath+'Config.ini');

IP_str:

=inifile.ReadString('服务器设置','服务器地址','127.0.0.1');

post_int:

=inifile.ReadInteger('服务器设置','端口',8080);

Gjtime:

=1;

Servername:

=IP_str;

end;

运行客户端通过config.ini得知管理端的IP和通信端口后便主动向管理端发送连接请求,要实现主动连接管理端这里用到了一个Timer控件,在客户端上添加一个Timer控件,把控件的interval属性设置为10000,也就是每隔10000毫秒向管理端发送一次连接请求。

以下代码便是利用Timer控件主动连接管理端的判断语句,如果建立连接,就向管理端发送被监视电脑的计算机名称、IP地址和操作系统类型。

procedureTServerForm.Timer1Timer(Sender:

TObject);

begin

try

ifnotIdTCPClient1.Connectedthen

begin

ifConRpcport(IdTCPClient1)then

begin

ifnotIdTCPClient1.Connectedthenexit;

SendStreamToClient(IdTCPClient1,'000',ComputerName+#13+GetOSName(GetOSVersion));

ClientHandleThread:

=TClientHandleThread.Create;

end;

end;

except

end;

end;

当客户端发送连接请求时,管理端在线便可以接收到客户端的请求,并与客户端建立连接,同时在界面通过ListView控件显示客户端的电脑名称、IP地址、操作系统。

StatusBar控件显示已成功启动和在线主机有几台

begin

count:

=0;

MyFirstBmp:

=TMemoryStream.Create;

 

IdTCPServer1.DefaultPort:

=8080;//服务器端口

IdTCPServer1.Active:

=true;

ifIdTCPServer1.Activethen

StatusBar1.Panels.Items[0].Text:

='已成功启动';

StatusBar1.Panels.Items[1].Text:

='在线主机0台';

end;

判断在线主机有几台:

procedureTMainForm.ListView1Change(Sender:

TObject;Item:

TListItem;

Change:

TItemChange);

begin

StatusBar1.Panels.Items[1].Text:

='在线主机'+inttostr(ListView1.Items.Count)+'台';

end;

3.3.5自定义控制协议标识符

客户端和管理端建立连接以后,客户端通过管理端操作界面上的每个功能按钮来对被监视电脑进行操作,这里要说明的是在这个程序里管理端向客户端发送的操作指令是自定义的控制协议标识符,用010、012等阿拉伯数字来表示,这些自定义标识符的作用就是管理端和客户端之间的协议,管理端通过发送这些标识符来告诉客户端该做什么。

管理端通过自定义函数ZhuDongCmdSend向客户端发送标识符,例如:

procedureTMainForm.SpeedButton4Click(Sender:

TObject);

begin

ZhuDongCmdSend('093','',false);

end;

其中093就代表的是关机标识符

客户端收到093这个指令后在自己协议列表里寻找093这个指令的意思并进行操作:

ifRDStrList[0]='093'then//关机

begin

SOkz

(1);

exit;

end;

当找到093为关机指令时,调用Sokz函数进行关机操作。

下面是对部分重要的自定义控制协议标识符进行说明:

文件管理:

010:

删除文件或文件夹

011:

新建文件

012:

接收客户端传来的文件

013:

发送文件到客户端

014:

远程运行文件

进程管理:

020:

刷新进程

021:

结束进程

连接监视:

030:

刷新窗口

031:

显示窗口

032:

隐藏窗口

033:

关闭窗口

查看屏幕:

050:

屏幕截取

090:

禁止关机

091:

允许关机

093:

关机

094:

注消

095:

发送消息

 

3.4主要功能的实现

3.4.1屏幕抓取的实现

当管理端与客户端建立连接时,如果客户端收到抓屏指令(050),客户端调用API函数GetWindowDC获取被监视电脑整个窗口的设备场景,再利用自定义函数My_GetScreenToBmp实现屏幕抓取。

截取图片为BMP格式,把BMP写入内存流中,然后把流发送给管理端。

管理端接收到流后做相反操作,将流转BMP然后用ShowImageForm显示出来。

抓图代码:

ProcedureMy_GetScreenToBmp(DrawCur:

Boolean;StreamName:

TMemoryStream);

//自定义抓屏函数,DrawCur表示抓鼠标图像与否

var

Mybmp:

Tbitmap;

Cursorx,Cursory:

integer;

dc:

hdc;

Mycan:

Tcanvas;

R:

TRect;

DrawPos:

TPoint;

MyCursor:

TIcon;

hld:

hwnd;

Threadld:

dword;

mp:

tpoint;

pIconInfo:

TIconInfo;

begin

Mybmp:

=Tbitmap.Create;{建立BMPMAP}

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

当前位置:首页 > 初中教育 > 语文

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

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