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

发布于:2024-07-25 ⋅ 阅读:(102) ⋅ 点赞:(0)

介绍

由于最近做上架比较多,会经常来确保服务器的服务,是否正常稳定运行。而端口的检测可以检查这个端口是否正常运行,所以开发了一个小工具: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;
        }

结果(运行效果)

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到