windows 服务程序和桌面程序集成(三)UDP监控工具

news2024/7/6 18:46:40

系列文章目录链接:

  1. windows 服务程序和桌面程序集成(一)概念介绍
  2. windows 服务程序和桌面程序集成(二)服务程序
  3. windows 服务程序和桌面程序集成(三)UDP监控工具
  4. windows 服务程序和桌面程序集成(四)桌面程序
  5. windows 服务程序和桌面程序集成(五)集成为一个EXE
  6. windows 服务程序和桌面程序集成(六)集成安装、启动、卸载功能
  7. windows 服务程序和桌面程序集成(七)效果演示及源程序下载
     

在开发windows服务程序和桌面程序中,经常需要UDP监控工具来获取程序运行状态,特别是对于windows服务程序或者是线程,没有界面,很难感知实时运行效果,这样开发一个简单的通用UDP监控工具,就可以监测到windows服务程序或者线程的事实运行状态,如果把UDP消息保存成文件,也就是一种监测日志了。

程序很简单,就是使用Indy的TidUDPServer控件,来实现UDP消息的监听接收。可以指定监听的端口,默认是8192。

提醒:

        如果这里的端口号更改了,那么windows服务中使用的发送UDP消息的客户端端口号也需要修改,需要修改成和这里一样的端口号!

使用的时候打开UDP服务即可,关闭UDP服务就停止监测了。

程序的uMainForm_UDP.pas单元代码如下:

unit uMainForm_UDP;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdUDPServer, IdGlobal, IdSocketHandle,
  IdBaseComponent, IdComponent, IdUDPBase, Vcl.StdCtrls, Vcl.ExtCtrls,
  Vcl.Samples.Spin;

type
  TForm_UDP_Server = class(TForm)
    IdUDPServer: TIdUDPServer;
    Memo1: TMemo;
    Panel1: TPanel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    SpinEdit1: TSpinEdit;
    Label1: TLabel;
    procedure IdUDPServerUDPRead(AThread: TIdUDPListenerThread;
      const AData: TIdBytes; ABinding: TIdSocketHandle);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form_UDP_Server: TForm_UDP_Server;

implementation

{$R *.dfm}

procedure TForm_UDP_Server.Button1Click(Sender: TObject);
begin
   IdUDPServer.Active := False;   //首先关闭
   IdUDPServer.DefaultPort := SpinEdit1.Value;
   try
     IdUDPServer.Active := True;
     Memo1.Lines.Add('UDP 服务打开成功,端口号: ' + IdUDPServer.DefaultPort.ToString);
   except on E: Exception do
     begin
       Memo1.Lines.Add(E.Message);
     end;
   end;
end;

procedure TForm_UDP_Server.Button2Click(Sender: TObject);
begin
  IdUDPServer.Active := False;   //关闭
  Memo1.Lines.Add('UDP 服务已经关闭!');
end;

procedure TForm_UDP_Server.Button3Click(Sender: TObject);
begin
   Memo1.Clear;
end;

procedure TForm_UDP_Server.IdUDPServerUDPRead(AThread: TIdUDPListenerThread;
  const AData: TIdBytes; ABinding: TIdSocketHandle);
var
  data : string;
begin
  //接收到数据,界面
  //处理接收到的数据
  data := ABinding.PeerIP + ':' + ABinding.PeerPort.ToString + '  ' +  TEncoding.UTF8.GetString(TBytes(AData));
  Memo1.Lines.Add(data);
end;

end.

下一篇:windows 服务程序和桌面程序集成(四)桌面程序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/636530.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基本线性分组码与性能参数及差错控制

本专栏包含信息论与编码的核心知识,按知识点组织,可作为教学或学习的参考。markdown版本已归档至【Github仓库:https://github.com/timerring/information-theory 】或者公众号【AIShareLab】回复 信息论 获取。 文章目录 基本线性分组码与性…

DAY 73 rsync远程同步

rsync介绍 rsync简介 rsync(Remote Sync,远程同步)是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前…

回调函数排序异常原因

回调函数排序异常原因 问题所在解决方案 参考我的这篇博文c回调函数排序:回调函数 我之前的代码是这样写的:(存在问题) 问题所在 将数组传递到其他函数中,再使用sizeof(数组名),得到的不是数组的完成长度了(往往会短一些) 解决…

美团、抖音“卷”向本地生活B端

配图来自Canva可画 当美团与大众点评的合并案落下帷幕,美团在本地生活领域的江湖地位就算是基本奠定了。只不过,随着互联网技术的不断发展和创新,本地生活服务又被提供了更多的可能性和新机遇。因此,尽管美团严防死守&#xff0c…

花青素-肠道微生物群-健康轴

谷禾健康 花青素-肠道微生物群-健康轴 经常听到一些专家在介绍食品或保健品时说富含花青素,那么究竟什么是花青素?对我们的健康又有何益处? 花青素是在植物组织中发现的天然水溶性色素,水果、蔬菜、花卉中的呈色物质大部分与之有关…

vue项目中使用html2canvas解决截图不全的问题

话不多说&#xff0c;直接上代码&#xff01;&#xff01;&#xff01; <div><el-button click"downloadPicture">下载</el-button><div ref"imageDom"><el-table:data"tableData"style"width: 100%":row…

喜讯 | 华秋电子荣获证券时报年度高成长企业

6月9日&#xff0c;由证券时报社主办的第十一届中国创业投资论坛盛大开启&#xff0c;在论坛上&#xff0c;2023证券时报创投金鹰奖暨创业企业新苗奖评选隆重揭晓。 经过两个多月紧张的申报、投票、评选&#xff0c;近300家机构和企业的激烈比拼&#xff0c;最终一批独具韧劲、…

【React】React中编写CSS,Redux,RTX

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录 React中编写CSS内联样式普通csscss modulescss in js动态添加class ReduxJS纯函数如何创建redux…

中国联通泛终端技术生态创新成果发布,移远通信荣获业务与应用板块突出贡献奖

6月7日&#xff0c;以“轻联万物 共赴星海”为主题的2023中国联通泛终端技术生态创新成果发布会在北京举行。 会上&#xff0c;中国联通泛终端技术生态创新联合实验室对一年来作出突出贡献的单位进行了嘉奖。移远通信凭借其在物联网产品及应用解决方案等领域的深厚积累和突出贡…

KubeSphere 社区双周报 | OpenFunction 发布 v1.1.0 | 2023.5.26-6.8

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者&#xff0c;并对近期重要的 PR 进行解析&#xff0c;同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为&#xff1a;2023.05.26-2023.…

将本地项目推到gitee上

查看原来仓库地址 git remote -v删除原来仓库地址 git remote rm origin # git remote rm origin https://gitee.com/zhangxiaoQ/large-file-upload.git添加需要推送的仓库 git remote add origin https://gitee.com/stevencmu/large-file-upload.git

Unity Scene界面出好多黄线解决办法

点下 Button下的Visualize就消失

创建可引导的 macOS 安装器(可启动U盘)

Apple官网下载的macOS镜像&#xff0c;只是一个安装包&#xff0c;不带引导不能直接安装到空白mac机器的。 1、首先&#xff0c;你必须要有台能正常运行macOS的mac pc。 2、下载macOS Sierra 10.12 El Capitan 10.11 Yosemite 10.10 Mountain Lion 10.8 Lion 10.7 点按以…

智能工厂MES系统“超级大脑”,助力数字化工厂生产流程

随着现代工业的不断发展&#xff0c;数字化工厂已经成为了生产制造的新趋势。而在实现数字化转型过程中&#xff0c; MES系统则显得尤为重要。 那么&#xff0c;MES系统究竟能为数字化工厂带来什么神奇的魔力呢&#xff1f;下面就来一探究竟。 物料管理 MES系统可以提供物料的…

MySQL(七):一文带你学透 mysql运算符 (超详解)

运算符 前言一、算术运算符1、加法与减法运算符2、乘法与除法运算符3、求模&#xff08;求余&#xff09;运算符 二、比较运算符1、等号运算符2、安全等于运算符3、不等于运算符4、空运算符5、非空运算符6、最小值运算符7、最大值运算符8、BETWEEN AND运算符9、IN运算符10、NOT…

Prefix-Tuning论文解读

论文名称&#xff1a;Prefix-Tuning: Optimizing Continuous Prompts for Generation 论文地址&#xff1a;https://arxiv.org/pdf/2101.00190.pdf 论文代码&#xff1a;https://github.com/XiangLi1999/PrefixTuning 想搞prompt&#xff0c;看了好多篇&#xff0c;挑着记录…

【微前端架构】微前端——功能团队中缺失的一块拼图

在任何合法的前端开发团队中&#xff0c;提高可扩展性和敏捷性很少会成为头等大事。在处理大型、复杂的产品时&#xff0c;如何确保快速、频繁地交付同时包含后端和前端的功能&#xff1f;像后端那样将前端单体分解成许多更小的部分似乎是答案。如果执行得当&#xff0c;微前端…

IO500榜单最新出炉,HPC性能天花板提升15倍

近日&#xff0c;存储圈又有炸裂新消息。 高性能计算&#xff08;HPC&#xff09;领域最具影响力的IO500最新一期榜单公布&#xff0c;以华为OceanStor Pacific分布式存储为核心底座的Cheeloo-1系统表现一骑绝尘&#xff0c;在最重要的10节点榜单中以创纪录的13万总得分位列第…

基于jsp+mysql+mybatis+Spring boot简单学生成绩信息管理系统

基于jspmysqlmybatisSpring boot简单学生成绩信息管理系统 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方…

容器(第五篇)docker-compose

docker-compose用来单机上编排容器&#xff08;定义和运行多个容器&#xff0c;使容器能互通&#xff09;&#xff0c;Eg&#xff1a;前端和后端部署在一台机器上&#xff0c;现在直接通过编写docker-compose文件对多个服务&#xff08;可定义依赖&#xff0c;按顺序启动服务&a…