您的位置:首页 > 科技 > IT业 > c# 端口监控 Helper 以及写一个端口监控工具

c# 端口监控 Helper 以及写一个端口监控工具

2024/9/23 22:49:38 来源:https://blog.csdn.net/qq_36051316/article/details/140636453  浏览:    关键词:c# 端口监控 Helper 以及写一个端口监控工具

c# 端口监控 Helper 以及写一个端口监控工具

  • 介绍
      • 核心代码:
      • 工具完整编码:
        • 1、编写界面
        • 2、打开定时控件的属性设置。
        • 3、编写定时控件的 Tick 事件
        • 结果(运行效果)

介绍

由于最近做上架比较多,会经常来确保服务器的服务,是否正常稳定运行。而端口的检测可以检查这个端口是否正常运行,所以开发了一个小工具:C# 端口监控 Helper 是一款基于C#语言的工具,这个意义在于帮助开发者快速实现对指定端口的监控,以保障(观察)网络服务的正常运行。

核心代码:

// 检查端口是否被占用
public bool IsPortInUse(int port)
{// 初始化一个布尔变量,默认端口未被占用bool inUse = false;// 获取本地机器的网络属性信息IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties();// 获取当前正在监听的TCP端点集合IPEndPoint[] endPoints = ipProperties.GetActiveTcpListeners();// 遍历所有活动的TCP端点foreach (IPEndPoint endPoint in endPoints){// 如果端点的端口号与传入的端口号相同,则表示端口被占用if (endPoint.Port == port){// 设置inUse为true,表示端口被占用inUse = true;// 退出循环,因为已经找到了被占用的端口break;}}// 返回端口是否被占用的结果return inUse;
}

工具完整编码:

1、编写界面

我这里使用winform,所以直接拖出来两个大大的 TextBox , 外加一个定时控件

在这里插入图片描述

TextBox 控件是一个用于输入和显示文本的图形用户界面元素。
Timer 控件是一个能够按照指定的时间间隔触发事件的组件。

2、打开定时控件的属性设置。
  1. Enabled:一个布尔值,用于指示Timer是否正在运行。设置为true时,Timer开始计时并引发Tick事件;设置为false时,Timer停止。
  2. Interval:一个整数,表示Timer事件触发的时间间隔(以毫秒为单位)。例如,设置Interval为1000表示每秒触发一次Tick事件。

在这里插入图片描述

3、编写定时控件的 Tick 事件

在这里插入图片描述
代码:

private void timer1_Tick(object sender, EventArgs e){string[] strings = textBox1.Text.Split(new[] { "\r\n" }, StringSplitOptions.None);string info = "端口占用情况\r\n";foreach (var a in strings){  if (int.TryParse(a, out int port)){if (IsPortInUse(port)){info += $"{a}  (占用)\r\n";}else{info += $"{a}  (未占用)\r\n";}} }textBox2.Text = info;}// 检查端口是否被占用public bool IsPortInUse(int port){// 初始化一个布尔变量,默认端口未被占用bool inUse = false;// 获取本地机器的网络属性信息IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties();// 获取当前正在监听的TCP端点集合IPEndPoint[] endPoints = ipProperties.GetActiveTcpListeners();// 遍历所有活动的TCP端点foreach (IPEndPoint endPoint in endPoints){// 如果端点的端口号与传入的端口号相同,则表示端口被占用if (endPoint.Port == port){// 设置inUse为true,表示端口被占用inUse = true;// 退出循环,因为已经找到了被占用的端口break;}}// 返回端口是否被占用的结果return inUse;}
结果(运行效果)

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com