c#怎么检查端口是否被占
时间: 2024-11-27 18:08:16 浏览: 21
在 C# 中,你可以使用 `System.Net` 命名空间下的 `Socket` 类来检查一个端口是否被占用。下面是一个简单的示例:
```csharp
using System;
using System.Net;
using System.Net.Sockets;
public class PortChecker
{
public static bool IsPortUsed(int port)
{
try
{
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
{
socket.Bind(new IPEndPoint(IPAddress.Any, port));
return true; // 如果到这里,说明端口已被绑定,即占用
}
}
catch (SocketException ex)
{
if (ex.ErrorCode == 10048) // 等于 WSAEADDRINUSE,表示端口已占用
{
return false;
}
else
{
throw; // 其他错误,需要进一步处理
}
}
}
public static void Main(string[] args)
{
int portToCheck = 80; // 想要检查的端口号
Console.WriteLine(IsPortUsed(portToCheck) ? $"Port {portToCheck} is in use." : $"Port {portToCheck} is available.");
}
}
```
在这个例子中,我们尝试创建一个 TCP 服务器套接字并绑定到指定端口。如果端口已经被占用,`Bind` 方法会抛出 `SocketException` 并包含 `WSAEADDRINUSE` 错误代码,这时我们会返回 `false`;如果没有异常,则说明端口可用。
阅读全文