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

news2024/11/13 12:56:06

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;
        }

结果(运行效果)

在这里插入图片描述

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

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

相关文章

分享从零开始学习网络设备配置--任务6.1 实现计算机的安全接入

项目描述 随着网络技术的发展和应用范围的不断扩大,网络已经成为人们日常生活中必不可少的一部分。园区网作为给终端用户提供网络接入和基础服务的应用环境,其存在的网络安全隐患不断显现出来,如非人为的或自然力造成的故障、事故&#xff1b…

第八讲:Sysmac Studio控制器设置

控制器设置 一、控制器设定-操作设置 1、启动模式(运行模式/编程模式) 控制器上电后,希望程序运行还是不运行。如果说希望程序运行,那么就选择运行模式。如果说希望上电后程序不运行就选择编程模式。 通常情况下选运行模式可能会比较多一些。 2、SD内存卡设置 当控制…

科研绘图系列:R语言和弦图 (Chord diagram)

介绍 和弦图(Chord Diagram)是一种用于展示多个实体之间相互关系的数据可视化方法。它通常用于表示网络或系统中不同节点(实体)之间的连接强度或流量。和弦图由一个圆形布局组成,每个节点在圆周上占据一个扇形区域,节点之间的连接通过圆内的线条(和弦)来表示。 特点:…

获取本地时间(Linux下,C语言)

一、函数 #include <time.h> time_t time(time_t *tloc);函数功能&#xff1a;获取本机时间&#xff08;以秒数存储&#xff0c;从1970年1月1日0:0:0开始到现在&#xff09;。返回值&#xff1a;获得的秒数&#xff0c;如果形参非空&#xff0c;返回值也可以通过传址调用…

判断字符串,数组方法

判断字符串方法 在JavaScript中&#xff0c;可以使用typeof操作符来判断一个变量是否为字符串。 function isString(value) {return typeof value string; } 判断数组 在JavaScript中&#xff0c;typeof操作符并不足以准确判断一个变量是否为数组&#xff0c;因为typeof会…

Soul App创始人张璐团队参与公益活动,帮助年轻人正视并管理情绪需求

最近,“脆皮年轻人”在社交平台上持续走红。该词指年轻人常因别人一些无意的动作而导致身体或心理创伤,反映出“Z世代”年轻人面临着心理健康挑战。在此背景下,Soul APP创始人张璐团队携手上海市精神卫生中心(宛平南路600号),共同发起了一场别开生面的青年心理健康公益活动,旨在…

JDBC操作MySQL数据

一准备、 1、首先在IDEA中导入导入包&#xff1a;mysql-connector-java-8.0.23 2、写初始化语句 &#xff08;1&#xff09;在目录下找到driver类 &#xff08;2&#xff09;在JDBCUtil函数中把驱动器的类路径改掉 ①打开driver类 ②按住类名 Driver用快捷键 CtrlAltshiftC …

学懂C语言(十八):C语言中数组及其应用

目录 一、数组的概念 二、数组的声明、初始化及访问 1、声明 2、初始化 3、访问数组元素 三、数组的应用 1. 存储和处理数据 2. 字符串处理 3. 多维数组 4. 函数参数 5、注意事项 一、数组的概念 C语言中的数组是一种数据结构&#xff0c;用于存储一…

开源邮箱套件介绍系列1:SOGo

项目网站&#xff1a;SOGo | Free Open Source Webmail 提示&#xff1a;如下内容大部分来自官方网站&#xff0c;通过AI智能翻译而来。 1. SOGo功能概述 SOGo提供了多种访问日历和消息数据的方式。您的用户可以使用网页浏览器、Microsoft Outlook、Mozilla Thunderbird、Ap…

连接hive库增加相关包

连接hive库增加相关包 例如&#xff1a;java.lang.NoClassDefFoundError: com/ctc/wstx/io/InputBootstrapper org.apache.hadoop.hive.common.auth.HiveAuthUtils java.lang.NoClassDefFoundError: org/codehaus/stax2/XMLInputFactory2

Windows系统上Git详细图文安装及使用教程

Git 是一种高效、分布式的版本控制系统&#xff0c;用于代码的跟踪、分支管理和协同工作&#xff0c;支持快速提交、合并和回滚操作。它是开发者工具箱中必不可少的工具之一&#xff0c;广泛应用于软件开发和其他需要版本控制的领域。 1. Git的安装 1.1 Git下载 可以通过以下…

ESXi 虚拟机迁移,版本不兼容问题处理

背景描述 已知要被迁移的虚拟机的兼容性版本较高&#xff0c;如下图所示&#xff1a; 这个兼容性版本&#xff0c;是在创建虚拟机的时候&#xff0c;我们手工选择的&#xff0c;如下图所示&#xff1a; 当我们需要将一个虚拟机迁移到另外一个 ESXi 主机时&#xff0c;能否正常…

【计算机网络】三次握手、四次挥手

问&#xff1a;三次握手 四次挥手 TCP 连接过程是 3 次握手&#xff0c;终止过程是 4 次挥手 3次握手 第一步&#xff1a;客户端向服务器发送一个带有 SYN&#xff08;同步&#xff09;标志的包&#xff0c;指示客户端要建立连接。 第二步&#xff1a;服务器收到客户端的请求…

Shiro安全框架(上)

目录 第一章 权限概述 1、什么是权限 2、身份认证概念-Authentication 【1】什么是认证 【2】对象 2、用户授权概念-Authorization 【1】什么是授权 【2】授权流程 第二章 Shiro概述 1、Shiro简介 【1】什么是Shiro? 【2】Shiro 的特点 2、核心组件 第三章 Shiro…

【CSharp】VisualStudio2019进行Windows窗体编程时关于AnyCPU的说明

【CSharp】VisualStudio2019进行Windows窗体编程时关于AnyCPU的说明 1.背景2.说明3.修改1.背景 IDE:Visual Studio 2019 通过VS2019编写windows窗体应用程序时,在VS2019界面可以看到Any CPU,如下: 2.说明 在Visual Studio 2019中进行Windows窗体编程时, AnyCPU是一个平…

wefwefwe

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

微前端--qiankun

qiankun qiankun分为accpication和parcel模式。 aplication模式基于路由工作&#xff0c;将应用分为两类&#xff0c;基座应用和子应用&#xff0c;基座应用维护路由注册表&#xff0c;根据路由的变化来切换子应用。子应用是一个独立的应用&#xff0c;需要提供生命周期方法供…

AI智能名片小程序在内容营销中的创新应用:以“48小时够你玩”系列为例

摘要&#xff1a;在数字化时代&#xff0c;内容营销已成为企业连接消费者、塑造品牌形象、推动销售增长的关键策略。AI智能名片小程序&#xff0c;作为新兴技术的集大成者&#xff0c;以其智能化、个性化、便捷化的特点&#xff0c;为内容营销注入了新的活力。本文深入探讨了AI…

[C++][STL源码剖析] 详解AVL树的实现

1.概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查找元素相当于在顺序表中搜索元素&#xff0c;效率低下。 因此&#xff0c;两位俄罗斯的数学家G.M.Adelson-Velskii 和E.M.Landis在1962年 发明了一种解决上…

医疗信息化之PACS系统源码,C#医学影像系统源码,成熟在用稳定运中

C#语言开发的一套PACS系统源码&#xff0c;C/S架构&#xff0c;成熟稳定&#xff0c;多家大型综合医院应用案例。自主版权&#xff0c;支持二次开发&#xff0c;授权后可商用。 医学影像存储与传输系统是针对数据库存储、传输服务、图像处理进行了优化,存储更安全、传输更稳定、…