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、打开定时控件的属性设置。
- Enabled:一个布尔值,用于指示Timer是否正在运行。设置为
true
时,Timer开始计时并引发Tick事件;设置为false
时,Timer停止。 - 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;
}