c#判断指定端口号是否被占用

本文系原创

分享判断指定端口号是否被占用的两种方法:

        /// <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;
        }

 

posted @ 2018-05-15 17:54  王小豆又叫小王子  阅读(4495)  评论(1编辑  收藏  举报