Delphi7 - Server Monitor开发并实现指定端口定时刷新、重启和邮件提醒等功能
项目背景
近期,总经办邮件反馈考勤数据频繁丢失,请IT排查其根本原因,并提供整改措施。
措不及防,这个项目当初并不是IT主导的,是设备部采购,然后协同软件供应商直接安装、部署和调试的,IT只是提供几个数据库表接口给供应商。然后我们就开始在设备、总经办、供应商之间相互扯皮,之所以扯皮的原因是,经过供应商排查并没有发现任何问题(具体情况不得而知),也就是说他们也不知道造成数据丢失的具体原因。
求人不如求己,后来我们这边排查数据库日志,发现在数据丢失的时间段内,数据库和上位机之间很少或者说基本没有数据交互。继续排查设备上位机日志,发现其网络端口会有间歇性响应异常等问题,重启端口后一切正常。
知道这些以后,那接下来问题就简单了。
解决方案
项目总目标
客制化一个系统/脚本,实现定时检测某个网络端口相关功能是否正常,通过其DLL接口实现端口刷新或重启,并将日志通过邮件方式发送给指定人员。
节点目标一:网络端口通断检测模块;
节点目标二:DLL接口重写,实现端口刷新或重启模块;
节点目标三:日志检测和邮件发送模块;
节点目标四:定时模块。
关键模块Demo
下面给出几个关键模块Demo
网络端口检测模块(需要引用IdIcmpClient单元)
var
icmp: TIdIcmpClient;
rpss: TReplyStatus;
begin
icmp := TIdIcmpClient.Create(nil);
try
icmp.Host := strIP;
icmp.ReceiveTimeout := intLinkTimeOut;
try
icmp.Ping;
rpss := icmp.ReplyStatus;
Result := not (rpss.ReplyStatusType = rsTimeOut);
except
Result := False;
end;
finally
icmp.Free;
end;
end;
Dll接口模块
关于Dll接口其实没什么可说的,不同的接口使用方法不一样,这里给出通用的Dll接口重写和调用的例子
关于Delphi Dll接口重写:Delphi - 创建SuperDll 持续更新
关于Delphi Dll接口调用:Delphi - 调用SuperDll 持续更新
邮件发送模块
参考我以前写过的:Delphi - Indy TIdMessage和TIdSMTP实现邮件的发送
定时模块
采用Timer控件,通过前台设置执行间隔、Enable属性,来控制对关键事件的定时执行效果
测试Demo运行效果
页面布局
运行效果
作者:Jeremy.Wu
出处:https://www.cnblogs.com/jeremywucnblog/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
Delphi7 - Server Monitor开发并实现指定端口定时刷新、重启和邮件提醒等功能的更多相关文章
- Window IDEA开发工具 杀死指定端口 cmd 命令行 taskkill
Windows平台 两步方法 : 1 查询端口占用,2 强行杀死进程 netstat -aon|findstr "8080" taskkill /pid 4136-t -f ...
- Python-定时爬取指定城市天气(二)-邮件提醒
目录 一.概述 二.模块重新划分 三.优化定时任务 四.发送邮件 五.源代码 一.概述 上一篇文章python-定时爬取指定城市天气(一)-发送给关心的微信好友中我们讲述了怎么定时爬取城市天气,并发送 ...
- CentOS 5.5 防火墙开启、关闭以及开放指定端口
之前有讲过公司新买的服务器使用的是CentOS5.5, 部署好Tomcat之后却发现输入114.80.*.*:8080(即ip:8080)却无法显示Tomcat默认的首页. 因为以前部署在Win Se ...
- CentOS防火墙开启、关闭与开放指定端口
系统为centos 5.5,部署好Tomcat之后却发现输入114.80.*.*:8080(即ip:8080)却无法显示Tomcat默认的首页.由于以前部署在Win Server的VPS上,Linux ...
- windows下关闭指定端口服务,解决tomcat端口占用问题
http://blog.aizhet.com/Server/640.html 在windows下做java EE的开发时:搭建 Eclipse+tomcat的java web开发环境:在应用之中经常遇 ...
- Linux设置允许指定端口通过防火墙centos7
开启防火墙 1.systemctl start firewalld.service(开启防火墙) 2.systemctl stop firewalld.service(开启防火墙) 3.service ...
- scp命令需要指定端口时要紧跟在scp后
问题来源:我本地是Ubuntu操作系统,有时需要更新一些文件到服务器.但是,为了安全起见我们都是将服务器的sshd端口修改的,通常不使用默认的22号端口. 如果我们使用scp命令时:scp upl ...
- openssh安装、设置指定端口号、免密码登录、变量传递、防暴力破解
首先确保机器挂在好光盘镜像,然后查看软件包信息 [root@xuegod63 ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev ...
- java 启动jar 指定端口
java 启动jar 指定端口 java -jar xxx.jar --server.port=80
随机推荐
- Java迭代Map方法
Map map=new HashMap(); map.put("1", "one"); map.put("2","two" ...
- MongoDB的基础命令
MongoDB的介绍 MongoDB: 是一个基于bson(二进制json)的NoSQL数据库 MongoDB的三要素: 数据库: 类似于MYSQL的数据库 集合: 类似于MYSQL的表 文档: 类似 ...
- 死磕 java线程系列之终篇
(手机横屏看源码更方便) 简介 线程系列我们基本就学完了,这一个系列我们基本都是围绕着线程池在讲,其实关于线程还有很多东西可以讲,后面有机会我们再补充进来.当然,如果你有什么好的想法,也可以公从号右下 ...
- 如何在vue-cli项目中结合mockjs模拟假数据
1.前言 在如今前后端分离的开发方式已被广泛采用的今天,前端同学和后端同学各自独立开发,后端提供数据接口,前端调用接口获取数据渲染页面.但是在实际开发中,后端开发由于逻辑相对复杂接口迟迟提供不到位,而 ...
- Mybaits 源码解析 (十二)----- Mybatis的事务如何被Spring管理?Mybatis和Spring事务中用的Connection是同一个吗?
不知道一些同学有没有这种疑问,为什么Mybtis中要配置dataSource,Spring的事务中也要配置dataSource?那么Mybatis和Spring事务中用的Connection是同一个吗 ...
- [转载]【转】教你如何实现linux和Windows之间的文件共享,samba的安
原文地址:[转]教你如何实现linux和Windows之间的文件共享,samba的安装与配置作者:铅笔小蜡 本人在虚拟机下装fedora13,已经实现.1. 首先检查os是否安装好了samba. [r ...
- java数组、字符串拼接
1. 数组实现拼接 int[] arr ={11,22,33,44,55,66}; System.out.print("["); for (int i = 0; i <arr ...
- Python 基础之 线程与进程
Python 基础之 线程与进程 在前面已经接触过了,socket编程的基础知识,也通过socketserver 模块实现了并发,也就是多个客户端可以给服务器端发送消息,那接下来还有个问题,如何用多线 ...
- Linux 解决ntfs文件系统问题,支持外设(U盘等设备)的即插即拔
# rpm -q fuse //查看这个软件有没有安装,一般安装系统都会装(最小安装例外) fuse-2.9.2-10.el7.x86_64 # yum -y install gcc # wget h ...
- [WPF] Caliburn Micro学习一 Installation
在之前的文章(http://blog.csdn.net/alvachien/article/details/5670838)里面,已经提到过MVC和MVVM在Design Pattern上的比较. 首 ...