c#檢測連接埠是否被佔用的簡單一實例
這篇文章主要介紹了c#檢測連接埠是否被佔用的簡單一實例,有需要的朋友可以參考一下
當我們要建立一個Tcp/Ip Server connection ,我們需要一個範圍在1000到65535之間的連接埠 。
但是本機一個連接埠只能一個程式監聽,所以我們進行本地監聽的時候需要檢測連接埠是否被佔用。
命名空間System.Net.NetworkInformation下定義了一個名為IPGlobalProperties的類,我們使用這個類可以擷取所有的監聽串連,然後判斷連接埠是否被佔用,代碼如下:
代碼如下:
public static bool PortInUse(int port)
{
bool inUse = false;
IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties();
IPEndPoint[] ipEndPoints = ipProperties.GetActiveTcpListeners();
foreach (IPEndPoint endPoint in ipEndPoints)
{
if (endPoint.Port == port)
{
inUse = true;
break;
}
}
return inUse;
}
我們使用HttpListner類在8080連接埠啟動一個監聽,然後測試是否可以被檢測出來,代碼如下:
代碼如下:
static void Main(string[] args)
{
HttpListener httpListner = new HttpListener();
httpListner.Prefixes.Add("http://*:8080/");
httpListner.Start();
Console.WriteLine("Port: 8080 status: " + (PortInUse(8080) ? "in use" : "not in use"));
Console.ReadKey();
httpListner.Close();
}