在C#中使用TcpClient或者其他通用的方式建立的Socket,該如何判斷這個(gè)端口是否被占用?比如下面的代碼:
TcpClient tc = new TcpClient(ip,port);
在C#中,可以使用System.Net.NetworkInformation命名空間下的IPGlobalProperties類和TcpConnectionInformation類來判斷某個(gè)TCP端口是否被占用:
using System.Net.NetworkInformation;int port = 80;if(IsPortInUse(port)){ Console.WriteLine($"{port} 端口被占用!");}else{ Console.WriteLine($"{port} 端口未被占用!");}Console.ReadLine();bool IsPortInUse(int port){ IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties(); TcpConnectionInformation[] connections = properties.GetActiveTcpConnections(); foreach (TcpConnectionInformation connection in connections) { if (connection.LocalEndPoint.Port == port) { // 端口已被占用 return true; } } // 端口未被占用 return false;}80 端口未被占用!
在上述示例中,IsPortInUse方法接收一個(gè)整數(shù)參數(shù)表示端口號(hào)。它通過IPGlobalProperties.GetIPGlobalProperties方法獲取當(dāng)前計(jì)算機(jī)的網(wǎng)絡(luò)連接信息,然后使用GetActiveTcpConnections方法獲取所有活動(dòng)的TCP連接信息。接著,使用循環(huán)遍歷每個(gè)TCP連接信息,判斷本地端點(diǎn)的端口號(hào)是否與傳入的端口號(hào)相同。如果找到匹配的端口號(hào),則表示端口已被占用;否則,表示端口未被占用。
需要注意的是,為了執(zhí)行此操作,可能需要管理員權(quán)限或運(yùn)行在適當(dāng)?shù)牟僮飨到y(tǒng)上。此外,還要確保沒有其他進(jìn)程在占用同一端口,因?yàn)門CP連接僅能檢測(cè)到已建立的連接而無法檢測(cè)到監(jiān)聽狀態(tài)的端口。
想要檢測(cè)監(jiān)聽狀態(tài)的端口,可以使用System.Net.NetworkInformation命名空間下的IPGlobalProperties類和IPEndPoint類來獲取所有監(jiān)聽的TCP端口。
using System.Net;using System.Net.NetworkInformation;public void GetListeningPorts(){ IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties(); IPEndPoint[] endpoints = properties.GetActiveTcpListeners(); foreach (IPEndPoint endpoint in endpoints) { Console.WriteLine($"監(jiān)聽狀態(tài)的端口:{endpoint.Port}"); }}
監(jiān)聽狀態(tài)的端口:80監(jiān)聽狀態(tài)的端口:135監(jiān)聽狀態(tài)的端口:445監(jiān)聽狀態(tài)的端口:1433監(jiān)聽狀態(tài)的端口:2383監(jiān)聽狀態(tài)的端口:3306監(jiān)聽狀態(tài)的端口:3389監(jiān)聽狀態(tài)的端口:5040....
在命令提示符(cmd)中,可以使用 netstat 命令來列出占用的端口
netstat -ano | findstr LISTENING
這個(gè)命令會(huì)列出所有正在監(jiān)聽(被占用)的端口,并顯示與每個(gè)端口關(guān)聯(lián)的進(jìn)程標(biāo)識(shí)符(PID)。
這個(gè)命令的部分:
執(zhí)行上述命令后,將看到正在監(jiān)聽的端口列表以及與它們關(guān)聯(lián)的進(jìn)程的 PID。可以根據(jù)需要查找特定的端口或進(jìn)一步處理輸出結(jié)果
C:/Users/Admin>netstat -ano | findstr LISTENING TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4 TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 848 TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4 TCP 0.0.0.0:1433 0.0.0.0:0 LISTENING 4956 TCP 0.0.0.0:2383 0.0.0.0:0 LISTENING 5200 TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 4280 TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 1204 TCP 0.0.0.0:5040 0.0.0.0:0 LISTENING 6424 TCP 0.0.0.0:7680 0.0.0.0:0 LISTENING 8344 TCP 0.0.0.0:49664 0.0.0.0:0 LISTENING 308 TCP 0.0.0.0:49665 0.0.0.0:0 LISTENING 932 TCP 0.0.0.0:49666 0.0.0.0:0 LISTENING 1512 TCP 0.0.0.0:49667 0.0.0.0:0 LISTENING 1364 TCP 0.0.0.0:49668 0.0.0.0:0 LISTENING 2484 TCP 0.0.0.0:49669 0.0.0.0:0 LISTENING 3440 TCP 0.0.0.0:49673 0.0.0.0:0 LISTENING 68 TCP 0.0.0.0:49706 0.0.0.0:0 LISTENING 4956 TCP 0.0.0.0:50128 0.0.0.0:0 LISTENING 4 TCP 127.0.0.1:22 0.0.0.0:0 LISTENING 8960 TCP 127.0.0.1:81 0.0.0.0:0 LISTENING 8960 TCP 127.0.0.1:443 0.0.0.0:0 LISTENING 8960 TCP 127.0.0.1:1434 0.0.0.0:0 LISTENING 4956 TCP 127.0.0.1:4012 0.0.0.0:0 LISTENING 4180 TCP 127.0.0.1:4013 0.0.0.0:0 LISTENING 4180 TCP 127.0.0.1:4301 0.0.0.0:0 LISTENING 8008 TCP 127.0.0.1:5533 0.0.0.0:0 LISTENING 18928 TCP 127.0.0.1:9210 0.0.0.0:0 LISTENING 6924 TCP 127.0.0.1:9418 0.0.0.0:0 LISTENING 8960 TCP 127.0.0.1:49672 0.0.0.0:0 LISTENING 3804 TCP 127.0.0.1:57178 0.0.0.0:0 LISTENING 2600 TCP 127.0.0.1:57335 0.0.0.0:0 LISTENING 17900 TCP 192.168.1.108:139 0.0.0.0:0 LISTENING 4 TCP [::]:80 [::]:0 LISTENING 4 TCP [::]:135 [::]:0 LISTENING 848 TCP [::]:445 [::]:0 LISTENING 4 TCP [::]:1433 [::]:0 LISTENING 4956 TCP [::]:2383 [::]:0 LISTENING 5200 TCP [::]:3306 [::]:0 LISTENING 4280 TCP [::]:3389 [::]:0 LISTENING 1204 TCP [::]:7680 [::]:0 LISTENING 8344 TCP [::]:49664 [::]:0 LISTENING 308 TCP [::]:49665 [::]:0 LISTENING 932 TCP [::]:49666 [::]:0 LISTENING 1512 TCP [::]:49667 [::]:0 LISTENING 1364 TCP [::]:49668 [::]:0 LISTENING 2484 TCP [::]:49669 [::]:0 LISTENING 3440 TCP [::]:49673 [::]:0 LISTENING 68 TCP [::]:49706 [::]:0 LISTENING 4956 TCP [::]:50128 [::]:0 LISTENING 4 TCP [::1]:22 [::]:0 LISTENING 8960 TCP [::1]:81 [::]:0 LISTENING 8960 TCP [::1]:443 [::]:0 LISTENING 8960 TCP [::1]:1434 [::]:0 LISTENING 4956 TCP [::1]:9418 [::]:0 LISTENING 8960
本文鏈接:http://www.www897cc.com/showinfo-26-60392-0.htmlC# 如何判斷某個(gè) TCP 端口是否被占用?
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com