本文系原创
分享判断指定端口号是否被占用的两种方法:
/// <summary> /// 判断指定端口号是否被占用 /// </summary> /// <param name="port"></param> /// <returns></returns> internal static Boolean IsPortOccupedFun1(Int32 port) { Boolean result = false; try { Process p = new Process(); p.StartInfo = new ProcessStartInfo("netstat", "-an"); p.StartInfo.CreateNoWindow = true; p.StartInfo.UseShellExecute = false; p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; p.StartInfo.RedirectStandardOutput = true; p.Start(); String output = p.StandardOutput.ReadToEnd().ToLower(); string ip1 = "127.0.0.1"; string ip2 = "0.0.0.0"; System.Net.IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList; List<string> ipList = new List<string>(); ipList.Add(ip1); ipList.Add(ip2); for (int i = 0; i < addressList.Length; i++) { ipList.Add(addressList[i].ToString()); } for (int i = 0; i < ipList.Count; i++) { if (output.IndexOf("tcp " + ipList[i] + ":" + port.ToString()) >= 0) { result = true; break; } } } catch (Exception ex) { Application.ActiveApplication.Output.Output(ex); } return result; }
/// <summary> /// 判断指定端口号是否被占用 /// </summary> /// <param name="port"></param> /// <returns></returns> internal static Boolean IsPortOccupedFun2(Int32 port) { Boolean result = false; try { System.Net.NetworkInformation.IPGlobalProperties iproperties = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties(); System.Net.IPEndPoint[] ipEndPoints = iproperties.GetActiveTcpListeners(); foreach (var item in ipEndPoints) { if (item.Port == port) { result = true; break; } } } catch (Exception ex) { Application.ActiveApplication.Output.Output(ex); } return result; }