System.Net.NetworkInformation命名空間下提供IPGlobalProperties類,用來提供本地計算機有關的網絡連接信息,獲取本機可用端口的使用方式如下:
using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.NetworkInformation; using System.Linq; namespace Common { public class AvailablePort { private const int MaxPort= 65535; /// <summary> /// 獲取所有可用的TCP端口 /// </summary> /// <param name="startPort"></param> /// <returns></returns> public static List<int> GetAllAvailableTCPPort(int startPort = 1000) { //提供本地計算機有關網絡連接信息 IPGlobalProperties iPGlobalProperties = IPGlobalProperties.GetIPGlobalProperties(); //獲取可用的TCP監聽終結點信息 IPEndPoint[] iPEndPoints = iPGlobalProperties.GetActiveTcpListeners(); return iPEndPoints.Where(q => q.Port >= startPort && q.Port <= MaxPort).Select(q => q.Port).ToList(); } /// <summary> /// 獲取所有可用的UDP端口 /// </summary> /// <param name="startPort"></param> /// <returns></returns> public static List<int> GetAllAvailableUDPPort(int startPort = 1000) { //提供本地計算機有關網絡連接信息 IPGlobalProperties iPGlobalProperties = IPGlobalProperties.GetIPGlobalProperties(); //獲取可用的UDP監聽終結點信息 IPEndPoint[] iPEndPoints = iPGlobalProperties.GetActiveUdpListeners(); return iPEndPoints.Where(q => q.Port >= startPort && q.Port <= MaxPort).Select(q => q.Port).ToList(); } /// <summary> /// 獲取所有TCP連接 /// </summary> /// <param name="startPort"></param> /// <returns></returns> public static void GetAllTCPConnect(int startPort = 1000) { //提供本地計算機有關網絡連接信息 IPGlobalProperties iPGlobalProperties = IPGlobalProperties.GetIPGlobalProperties(); //獲取TCP連接信息 TcpConnectionInformation[] iPEndPoints = iPGlobalProperties.GetActiveTcpConnections(); foreach (var item in iPEndPoints) { Console.WriteLine($"Local:{item.LocalEndPoint.Address},Remote:{item.RemoteEndPoint.Address},State:{item.State}"); } } } }