毕业设计(论文)-Delphi 7局域网监控程序的设计.doc

上传人:西安人 文档编号:3281202 上传时间:2019-08-07 格式:DOC 页数:15 大小:114.54KB
返回 下载 相关 举报
毕业设计(论文)-Delphi 7局域网监控程序的设计.doc_第1页
第1页 / 共15页
毕业设计(论文)-Delphi 7局域网监控程序的设计.doc_第2页
第2页 / 共15页
毕业设计(论文)-Delphi 7局域网监控程序的设计.doc_第3页
第3页 / 共15页
毕业设计(论文)-Delphi 7局域网监控程序的设计.doc_第4页
第4页 / 共15页
毕业设计(论文)-Delphi 7局域网监控程序的设计.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《毕业设计(论文)-Delphi 7局域网监控程序的设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-Delphi 7局域网监控程序的设计.doc(15页珍藏版)》请在三一文库上搜索。

1、局域网监控程序的设计摘 要在当今信息化高度发展的今天,局域网管理的重要性更加突出,建立一个强有力的局域网监控系统是很有必要的。局域网监控程序,应用于一般小规模的公司内部局域网,方便公司对员工的电脑进行监控管理,防止员工在工作时间利用公司电脑做与工作无关的事,从而提高工作效率。本局域网监控程序采用了Delphi 7开发,能显示局域网中所有活动主机IP,能对目标主机进行进程管理和连接监视,当发现目标主机异常时能发消息给目标主机予以提醒,可以控制目标主机的重启、注销、关机,并实行屏幕抓取,发现异常情况可锁定目标主机。关键词:局域网;Delphi;监控Design of Local Area Netw

2、ork Monitoring SoftwareAbstractWith the development of technology, local area network becomes more and more important. It is necessary to develop a local area network monitoring software. Local area network monitoring software is mainly applied in small scale company in local area network, which hel

3、ps company monitor and manage computer used by stuff and avoids stuff do things foreign to work.The local area network monitoring software is based on Delphi 7. It provides series functionalities , such as showing IP for all active host computers in the local area network, managing process and monit

4、oring connection for destination host, reminding exception by sending message to destination host when exception occurs, controlling operations of reset ,logging out and shutting down for destination host, printing screen, and locking destination host when exception occurs.Key words: local area netw

5、ork; Delphi ; monitoring目 录论文总页数:18页1 引言111 本课题研究的意义112 本课题的研究方法和思路12 相关软件和技术原理介绍121 Delphi基础介绍122 TCP简介223 INDY简介224 Socket简介33 系统设计与实现431 系统架构432 系统设计4321运行环境4322模块功能433 主要模块设计原理5331管理端界面设计5332通信模式设计思路6333通信原理7334通信流程7335 自定义控制协议标识符1034 主要功能的实现12341屏幕抓取的实现12342进程管理的实现14结 论15参考文献16致 谢17声 明181 引言11

6、本课题研究的意义计算机网络的普及应用已渗透到社会各个层面,给社会带来便利的同时也随之带来的安全和管理问题。互联网络是一把双刃剑;就如一个企业而言有些员工利用工作时间看新闻、玩游戏、干私活、聊天、泄密公司资料、炒股票、下电影、听歌曲、甚至在公司网上边拿老板工资边找工作等等。不仅仅消耗公司资源,更是因为影响公司效率、泄露公司机密、甚至丢失客户资源令人痛心。而利用局域网网络监控软件这非常有效的管理辅助手段并和企业的内部管理机制结合达到更加事半功倍的效果,已经成为大家的共识。12 本课题的研究方法和思路综合运用以前所学的网络相关知识,尤其是要掌握Object Pascal语言和网络编程,熟悉Delph

7、i的常用控件,先做好基本的界面框架,再实现每个模块的功能,界面与模块功能之间用创建事件联系起来(网络连接的监控/能对局域网资源进行搜索/显示局域网内所有活动主机的IP地址及主机名/发消息/控制目标主机的重启、注销、关机/实行屏幕抓取/锁定目标主机)调试成功后,最后再把各功能模块集成在一起。2 相关软件和技术原理介绍21 Delphi基础介绍Delphi是Borland公司研制的新一代可视化开发工具,可在Windows3.x、Windows95、WindowsNT等环境下使用。它拥有一个可视化的集成开发环境(IDE),采用面向对象的编程语言ObjectPascal和基于部件的开发结构框架。Del

8、phi它提供了100多个可供使用的构件,利用这些部件,开发人员可以快速地构造出应用系统。开发人员也可以根据自己的需要修改部件或用Delphi本身编写自己的部件。主要特点如下: (1)直接编译生成可执行代码,编译速度快。由于Delphi编译器采用了条件编译和选择链接技术,使用它生成的执行文件更加精炼,运行速度更快。在处理速度和存取服务器方面,Delphi的性能远远高于其他同类产品。(2)支持将存取规则分别交给客户机或服务器处理的两种方案,而且允许开发人员建立一个简单的部件或部件集合,封装起所有的规则,并独立于服务器和客户机,所有的数据转移通过这些部件来完成。这样,大大减少了对服务器的请求和网络上

9、的数据传输量,提高了应用处理的速度。 (3)提供了许多快速方便的开发方法,使开发人员能用尽可能少的重复性工作完成各种不同的应用。利用项目模板和专家生成器可以很快建立项目的构架,然后根据用户的实际需要逐步完善。 (4)具有可重用性和可扩展性。开发人员不必再对诸如标签、按钮及对话框等Windows的常见部件进行编程。Delphi包含许多可以重复使用的部件,允许用户控制Windows的开发效果。 (5)具有强大的数据存取功能。它的数据处理工具BDE(BorlandDatabaseEngine)是一个标准的中介软件层,可以用来处理当前流行的数据格式,如xBase、Paradox等,也可以通过BDE的S

10、QLLink直接与Sybase、SQLServer、Informix、Oracle等大型数据库连接。 Delphi既可用于开发系统软件,也适合于应用软件的开发。22 TCP简介TCP(Transmission Control Protocol,传输控制协议)是一个面向连接的协议,它依赖于IP 协议。TCP 在两台通信的计算机之间建立一个虚拟的连接,数据可以进行可靠无误的双向交换。在TCP 协议中,两台计算机在通信前先要建立Socket(套接字,即通信端点),每个套接字由本机的IP 地址和一个16 位的端口号组成,建立连接后,数据都被拆分成小于64k 字节的片断,加上数据包头发送出去,到达另一台

11、主机后再重新组装。当不再需要连接时,必须释放和撤销连接,为下一次传输腾空资源。TCP 为确保数据在传输过程中的可靠性,除规定了数据包的格式外,还具体规定了端对端连接管理的规则,传输数据是策略的约定、拥挤与阻塞控制的规则和定时时间量管理办法等。这样IP 协议束手无策的诸多问题都得到了解决,如数据包失效问题,当TCP 发现数据包已经过时,则会要求发送端重新发送;数据接收次序问题,在实际中数据包有可能不能按照原来的先后次序到达,而TCP 并不要求接收和发送的次序一致,仍能按照正确的顺序装配好。23 INDY简介INDY的全名是Internet Direct(也叫Winshoes),它是一套开放源代码

12、的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

13、、FTP、PING、TELNET等。INDY是完全基于SOCKET阻塞工作模式的开发库,这是区别于winsock的一大特点,winsock使用的是异步模式(非阻塞模式)阻塞模式具有以下几个比异步模式优越的特点:编程更简单,可以把所有处理SOCKET的代码放在一起,顺序执行,而不用分散在不同的事件处理代码段里。更容易在多线程程序里使用,由于阻塞模式的代码可以放在一起,可以很方便的把这些代码包裹在线程里面来使用,而不象异步模式,需要针对不同的事件,设置不同的处理代码。24 Socket简介Socket是建立在传输层协议(主要是TCP和UDP)上的一种套接字规范,最初是由美国加州Berkley大学提

14、出,它定义两台计算机间进行通信的规范(也是一种编程规范),如果说两台计算机是利用一个“通道“进行通信,那么这个“通道“的两端就是两个套接字。套接字屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了TCP协议软件和实现了套接字规范的计算机之间的通信成为可能。套接字屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了TCP协议软件和实现了套接字规范的计算机之间的通信成为可能。对于应用程序来说,它就像一个服务协议插座一样,各种不同的协议,对应不同的端口。我们可以把套接字看作相应进程上的“门”:进程把消息发送到网络或从网络接受消息都得经过自身得套接字。当一个进程想给另一台主机中的另一个进

15、程发送消息是,它就把该消息推出自家的门。该进程认定在这扇门的另一侧有一个传输设施会把这个消息传输到目的进程的门口。在服务器进程处于运行状态的情况下,客户进程就能够初始化一个到服务器的TCP连接了,这是通过在客户程序中创建一个套接字对象来完成的,当客户创建了它的套接字对象的时候,它详细说明了服务器进程的地址,也就是,服务器的IP地址和进程的端口号,一旦创建了套接字对象,客户端的TCP就发起一个三次握手,并建立一个和服务器的TCP连接,三次握手对客户和服务器程序来说是完全透明的。3 系统设计与实现31 系统架构局域网监控程序是一个C/S模式的软件,客户端(被监视电脑)运行server.exe后主动

16、连接管理端(服务器),管理端响应连接通过一台主机对多个客户端进行监控操作。客户端2客户端3客户端4 管理端 客户端1图1 监控程序构架图32 系统设计321运行环境硬件系统:1.CPU P4 2.42.内存 512M3.普通网卡操作系统:Windows XP 软件需求:Dehphi 7322模块功能在管理端有13个操作模块分别为允许关机,禁止关机,关机,重启,注销,锁屏,解锁,发送消息,查看屏幕,文件管理,进程管理,连接监视和退出程序。管理端发送消息允许禁止关机重启注毁锁定解锁文件管理查看屏幕连接监视进程管理图2 管理端模块功能33 主要模块设计原理331管理端界面设计主界面包含了对客户端的所

17、有操作,大体由两部分组成,首先是显示栏,主要显示被监视电脑的电脑名称、IP地址还有使用的何种操作系统,利用Dehphi 7自带的位于Win32控件版面的ListView列表视控件建立一个显示栏,这里需要把ViewStyle属性设置为vsReport,因为显示栏需要显示局域网所有连接的被监控电脑,所以必须以详细列表的方式显示,显示的信息可以分成多列。在ListView中添加3个列分别是电脑名称、IP地址、操作系统。再在form框体下方添加StatusBar组件用于显示连接是否成功和有几台被监视电脑在线。最后在form框体右侧添加13个SpeedButton,SpeedButton的Caption

18、属性分别设为允许关机、禁止关机、重启、关机、注销、发送消息、查看屏幕、文件管理、进程管理、连接监视、锁定、解屏、退出程序。图3 界面效果图332通信模式设计思路服务器端和客户端之间的网络通信是实现各种功能的前提,管理端发送指令,客户端接收指令并响应。本设计利用Delphi 7的网络通信组件INDY来建立客户端与管理端之间的TCP连接,主要用到了INDY的idTCPServer和idTCPClient两个组件。idTCPClient组件功能:IdTCPClient 封装一个完整的TCP 客户端程序,其中包括Sock 支持。IdTCPClient 可用作一个执行特殊协议时的父类来使用,许多的IND

19、Y 客户组件例如IdDayTime、IdEcho、IdFinger、IdFTP、IdGopher、IdHTTP、IdPOP3、IdQUOTO 等都是由它派生出来的。使用TIdTCPClient 组件最基本的要设置它的IP 和Port 属性,然后调用它的Connect 方法即可。idTCPServer组件功能:IdTCPServer 实现一个多线程服务端,TIdTCPServer=class(TIdComponent)。IdTCPServer 封装一个完整的多线程TCP 服务端。它使用一个或者多个线程来接收客户端的连接,并联合idThreadMgr分配专门的线程来处理每一个客户端和服务器的连接。

20、在线程中维持一个激活ThreadClass 实例的列表。333通信原理本设计实现的是一台主机对局域网内的多台主机,采用了INDY的多线程技术,下图显示了idTCPServer的工作原理。INDY服务器组件idTCPServer创建一个同应用程序主线程分离的监听线程来监听被监视电脑连接请求,对于接受的每一个被监视电脑,都创建一个新的线程来为该被监视提供服务,所有与这一被监视电脑相关的事务都由该线程来处理。主线程idTCPserver.Active:= True;idTCPserver.Active:= False;监听线程被监视电脑1连接请求被监视电脑2连接请求被监视电脑n连接请求被监视1线程被

21、监视2线程被监视3线程图4 idTCPServer的工作原理334通信流程因为INDY组件是基于SOCKET阻塞工作模式,阻塞套接字调用在完成工作之后才返回,如果在程序主线程中进行此类调用,应用程序将不能正常处理用户界面消息,从而造成了用户界面的“死锁”。而在管理端和客户端添加一个TidAntiFreeze组件就可以避免用户界面“死锁”的发生,TIdAntiFreeze在INDY内部定时中断对栈的调用,并在中断期间调用Application.ProcessMessages方法处理消息,而外部的INDY调用继续保存阻塞状态,就好像TIdAntiFreeze对象不存在一样。这样界面“死锁”的问题就

22、可以得到完满的解决。在客户端添加idTCPClient组件,在管理端添加idTCPServer组件,这样它们之间就形成了TCP通信,客户端是在被监视电脑上运行,管理端是在主机上运行面向操作员,具体客户端和管理端之间的通信如下图:否是客户端获取IP和端口请求连接是否连接成功管理端退出否是图5 通信流程图客户端从Config.ini获取管理端的IP地址和开放端口(8080),客户端得知IP和端口后便主动向管理端发送连接请求,管理端接受请求与客户端建立连接,管理端想对客户端实施监控操作时,便发送操作指令给客户端,客户端接受指令并在内部解析,客户端得出结果并返回给管理端,管理端在界面上显示出返回的操作

23、结果。要建立与服务器的连接,应首先要知道服务器的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

24、.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控件主动连接管理端

25、的判断语句,如果建立连接,就向管理端发送被监视电脑的计算机名称、IP地址和操作系统类型。procedure TServerForm.Timer1Timer(Sender: TObject);begin try if not IdTCPClient1.Connected then begin if ConRpcport(IdTCPClient1) then begin if not IdTCPClient1.Connected then exit; SendStreamToClient(IdTCPClient1,000,ComputerName+#13+GetOSName(GetOSVersio

26、n); ClientHandleThread:=TClientHandleThread.Create; end; end; except end;end;当客户端发送连接请求时,管理端在线便可以接收到客户端的请求,并与客户端建立连接,同时在界面通过ListView控件显示客户端的电脑名称、IP地址、操作系统。StatusBar控件显示已成功启动和在线主机有几台begin count:=0; MyFirstBmp:=TMemoryStream.Create; IdTCPServer1.DefaultPort:=8080 ; /服务器端口 IdTCPServer1.Active:=true; if

27、 IdTCPServer1.Active then StatusBar1.Panels.Items0.Text:=已成功启动; StatusBar1.Panels.Items1.Text:=在线主机0台;end;判断在线主机有几台:procedure TMainForm.ListView1Change(Sender: TObject; Item: TListItem; Change: TItemChange);beginStatusBar1.Panels.Items1.Text:=在线主机+inttostr(ListView1.Items.Count)+台;end;335 自定义控制协议标识符

28、客户端和管理端建立连接以后,客户端通过管理端操作界面上的每个功能按钮来对被监视电脑进行操作,这里要说明的是在这个程序里管理端向客户端发送的操作指令是自定义的控制协议标识符,用010、012等阿拉伯数字来表示,这些自定义标识符的作用就是管理端和客户端之间的协议,管理端通过发送这些标识符来告诉客户端该做什么。管理端通过自定义函数ZhuDongCmdSend向客户端发送标识符,例如:procedure TMainForm.SpeedButton4Click(Sender: TObject);beginZhuDongCmdSend(093, , false); end;其中093就代表的是关机标识符客

29、户端收到093这个指令后在自己协议列表里寻找093这个指令的意思并进行操作:if RDStrList0 = 093 then /关机 begin SOkz(1); exit; end;当找到093为关机指令时,调用Sokz函数进行关机操作。下面是对部分重要的自定义控制协议标识符进行说明:文件管理:010:删除文件或文件夹011:新建文件012:接收客户端传来的文件013:发送文件到客户端014:远程运行文件进程管理:020:刷新进程021:结束进程连接监视:030:刷新窗口031:显示窗口032:隐藏窗口033:关闭窗口查看屏幕:050:屏幕截取090:禁止关机091:允许关机093:关机09

30、4:注消095:发送消息34 主要功能的实现341屏幕抓取的实现当管理端与客户端建立连接时,如果客户端收到抓屏指令(050),客户端调用API函数GetWindowDC获取被监视电脑整个窗口的设备场景,再利用自定义函数My_GetScreenToBmp实现屏幕抓取。截取图片为BMP格式,把BMP写入内存流中,然后把流发送给管理端。管理端接收到流后做相反操作,将流转BMP然后用ShowImageForm显示出来。抓图代码:Procedure My_GetScreenToBmp(DrawCur:Boolean;StreamName:TMemoryStream);/自定义抓屏函数,DrawCur 表示抓鼠标图像与否varMybmp:Tbitmap;Cursorx, Cursory: integer;dc: hdc;Mycan: Tcanvas;R: TRect;DrawPos: TPoint;MyCursor: TIcon;hld: hwnd;Threadld: dword;mp: tpoint;pIconInfo: TIconInfo;beginMybmp := Tbitmap.Create; 建立BMPMAP 第 12 页 共 18 页

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

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1