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

news/2025/1/15 23:21:56/

系列文章目录链接:

  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;interfaceusesWinapi.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;typeTForm_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;varForm_UDP_Server: TForm_UDP_Server;implementation{$R *.dfm}procedure TForm_UDP_Server.Button1Click(Sender: TObject);
beginIdUDPServer.Active := False;   //首先关闭IdUDPServer.DefaultPort := SpinEdit1.Value;tryIdUDPServer.Active := True;Memo1.Lines.Add('UDP 服务打开成功,端口号: ' + IdUDPServer.DefaultPort.ToString);except on E: Exception dobeginMemo1.Lines.Add(E.Message);end;end;
end;procedure TForm_UDP_Server.Button2Click(Sender: TObject);
beginIdUDPServer.Active := False;   //关闭Memo1.Lines.Add('UDP 服务已经关闭!');
end;procedure TForm_UDP_Server.Button3Click(Sender: TObject);
beginMemo1.Clear;
end;procedure TForm_UDP_Server.IdUDPServerUDPRead(AThread: TIdUDPListenerThread;const AData: TIdBytes; ABinding: TIdSocketHandle);
vardata : string;
begin//接收到数据,界面//处理接收到的数据data := ABinding.PeerIP + ':' + ABinding.PeerPort.ToString + '  ' +  TEncoding.UTF8.GetString(TBytes(AData));Memo1.Lines.Add(data);
end;end.

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


http://www.ppmy.cn/news/341415.html

相关文章

AXI协议整理

原文出处 http://blog.csdn.net/rill_zhen/article/details/44219593/ 总线信号分两种。valid/ready协议 , 1,valid/ready协议 axi协议是典型的基于valid/ready协议的总线协议。 valid/ready协议的优势就是master和slave的相对独立性比较好。 对于…

H2内嵌数据库的使用

文章目录 [toc]H2内嵌数据库的使用运行方式JDBC URL Java应用中的使用操作实例 Java web 应用中的使用H2服务的启动1.命令行启动服务2.Servlet的方式3.maven插件方式 数据库初始化1.maven方式2.spring方式 项目路径 H2内嵌数据库的使用 H2是一个开源的嵌入式数据库引擎&#xf…

wx2540h配置教程_H3C wx3000系列配置

配置举例 3.1 组网需求 Ap---------3024----------- 三层设备 3.3 配置步骤 3.3.1 配置 AC 1. 主要配置步骤 (1) 配置 AC 的地址 system-view [AC]interface vlan 1 //ap 管理地址网关 [AC-Vlan-interface1]ip address 192.168.0.1 24 [AC-Vlan-interface1]quit [AC]vlan 10…

HBase(3):HBase Shell 操作

目录 0. 相关文章链接 1. 基本操作 2. namespace 3. DDL 3.1. 创建表 3.2. 查看表 3.3. 修改表 3.4. 删除表 4. DML 4.1. 写入数据 4.2. 读取数据 4.3. 删除数据 0. 相关文章链接 HBase文章汇总 1. 基本操作 1) 进入 HBase 客户端命令行 bin/hbase s…

HW3000无线芯片模块

HW3000超低双向无线fsk模块完美替代CC1101、CC1120、A7139、A7108、si4432、si4438、si4463 转载于:https://my.oschina.net/u/2970238/blog/761348

SV枚举类型转化、数组、字符串使用小结

目录 一、枚举类型转化 二、结构体 三、合并数组和非合并数组 1、非组合型 2、组合型 3、数组中数据查找 四、字符串string 五、关联数组 一、枚举类型转化 将1转换成枚举类型st2 state_t(1),可以成功转换。 将4转换成枚举类型st2 state_t(4); 超出范围&a…

hbase HFile V3介绍

HBase 0.98开始增加了对cell tags的支持,所以其HFile结构也发生了改变。HFile V3的格式只是在V2格式后增加了标签部分。其他保持不变,所以对V2保持了兼容性。用户可以从V2直接切换到V3。 HFile V3主要的提高是压缩比和,通过把key放在一起 Val…

H3C UniServer R6900 G3 服务器介绍

一、H3C UniServer R6900 G3服务器产品概述 全新H3C UniServer R6900 G3服务器产品家族 H3C UniServer R6900 G3服务器介绍: H3C R6900 G3机架式服务器是自主研发的,基于IntelXeonScalable Processor的新一代4U机架式服务器,可广泛应用于新…