zoukankan      html  css  js  c++  java
  • 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;
            }
  • 相关阅读:
    TCP/IP(四)网络层
    TCP/IP(二)物理层详解
    TCP/IP(一)之开启计算机网络之路
    TCP/IP中你不得不知的十大秘密
    ASP .NET Core 基本知识点示例 目录
    微服务 + Docker + Kubernetes 入门实践 目录
    ASP.NET Core 中的实时框架 SingalR
    ASP.NET Core WebAPI中使用JWT Bearer认证和授权
    .NET Core 中的通用主机和后台服务
    EF Core 实现多租户
  • 原文地址:https://www.cnblogs.com/mohanchen/p/9042229.html
Copyright © 2011-2022 走看看