项目背景

  近期,总经办邮件反馈考勤数据频繁丢失,请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开发并实现指定端口定时刷新、重启和邮件提醒等功能的更多相关文章

  1. Window IDEA开发工具 杀死指定端口 cmd 命令行 taskkill

    Windows平台   两步方法 :  1 查询端口占用,2 强行杀死进程 netstat -aon|findstr "8080" taskkill /pid 4136-t -f ...

  2. Python-定时爬取指定城市天气(二)-邮件提醒

    目录 一.概述 二.模块重新划分 三.优化定时任务 四.发送邮件 五.源代码 一.概述 上一篇文章python-定时爬取指定城市天气(一)-发送给关心的微信好友中我们讲述了怎么定时爬取城市天气,并发送 ...

  3. CentOS 5.5 防火墙开启、关闭以及开放指定端口

    之前有讲过公司新买的服务器使用的是CentOS5.5, 部署好Tomcat之后却发现输入114.80.*.*:8080(即ip:8080)却无法显示Tomcat默认的首页. 因为以前部署在Win Se ...

  4. CentOS防火墙开启、关闭与开放指定端口

    系统为centos 5.5,部署好Tomcat之后却发现输入114.80.*.*:8080(即ip:8080)却无法显示Tomcat默认的首页.由于以前部署在Win Server的VPS上,Linux ...

  5. windows下关闭指定端口服务,解决tomcat端口占用问题

    http://blog.aizhet.com/Server/640.html 在windows下做java EE的开发时:搭建 Eclipse+tomcat的java web开发环境:在应用之中经常遇 ...

  6. Linux设置允许指定端口通过防火墙centos7

    开启防火墙 1.systemctl start firewalld.service(开启防火墙) 2.systemctl stop firewalld.service(开启防火墙) 3.service ...

  7. scp命令需要指定端口时要紧跟在scp后

      问题来源:我本地是Ubuntu操作系统,有时需要更新一些文件到服务器.但是,为了安全起见我们都是将服务器的sshd端口修改的,通常不使用默认的22号端口. 如果我们使用scp命令时:scp upl ...

  8. openssh安装、设置指定端口号、免密码登录、变量传递、防暴力破解

    首先确保机器挂在好光盘镜像,然后查看软件包信息 [root@xuegod63 ~]# df -hFilesystem      Size  Used Avail Use% Mounted on/dev ...

  9. java 启动jar 指定端口

    java 启动jar 指定端口 java -jar xxx.jar --server.port=80

随机推荐

  1. NOIP模拟 4

    T1没开longlong T2忘了有向... T3是个好题,可以说将复杂度从N^2优化到NlogN是一个质的飞跃 考虑分治(要想出log可不就要分治么!(segtree也行 但我不会) 对于一个分治区 ...

  2. Docker的Ubuntu16.04容器如何汉化

    最近发现docker hub中的vnc镜像大部分是没有安装语言包的,试了好多天才把他搞出来. 下面为实现步奏. 网盘软件地址 ://pan.baidu.com/share/link?shareid=3 ...

  3. Project Euler 52: Permuted multiples

    可以看到数字125874的两倍251748和它有着完全相同的数字,只是顺序不同而已.求一个最小的正整数\(x\),使得\(2x,3x,4x,5x,6x\)都有完全相同的数字. 分析:此题的思路比较直接 ...

  4. pssh系列工具

    一.pssh简介及安装 首先我们来了解下什么是pssh,它是干嘛用的?pssh是一个python编写可以在多台服务器上执行命令的工具,也可以实现文件复制.换而言之就是一个批量管理多台服务器的一个小工具 ...

  5. sqlite修改表、表字段等与sql server的不同之处

    sqlite中只支持 ALTER TABLE 命令的 RENAME TABLE 和 ADD COLUMN. 其他类型的 ALTER TABLE 操作如 DROP COLUMN,ALTER COLUMN ...

  6. F#周报2019年第46期

    新闻 使用Pulumi和.NET Core创建现代云应用 宣告.NET Core 3.1预览版3 ML.NET模型构建器升级 .NET Framework修复工具 Mac上的Visual Studio ...

  7. 深入理解计算机系统 第三章 程序的机器级表示 Part2 第二遍

    第一遍对应笔记链接 https://www.cnblogs.com/stone94/p/9943779.html 本章汇编代码中常出现的几个指令及其含义 1.push 操作数的个数:1 将操作数(一般 ...

  8. [LC]235题 二叉搜索树的最近公共祖先 (树)(递归)

    ①题目 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q 的祖先 ...

  9. 服务器上传文件到oss,以及备份

    公司的前端js,css是发布到oss的,所以要求后台在发布的同时先把即将要覆盖的文件备份到服务器上 步骤是先上传文件到服务器,服务器上传到oss服务器之前先备份相同文件名的文件 public clas ...

  10. mybatis的parameterType为map,map里带有多个list

    我写这个主要是为了解决sql注入 原sql有sql注入, 结果:select req_msg_id from account_message_info where req_msg_id in ('12 ...