• 获取本机可用端口


    如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net.NetworkInformation;
    
    namespace ConsoleApplication2
    {
        public static class AvailablePort
        {
            /// <exception cref="Exception"></exception>
            public static int GetFirstAvailablePort()
            {
                const int MAX_PORT = 65535;
                const int BEGIN_PORT = 5000;
                for (var i = BEGIN_PORT; i < MAX_PORT; i++)
                {
                    if (PortIsAvailable(i))
                    {
                        return i;
                    }
                }
                throw new Exception("No Available Port.");
            }
    
            private static IEnumerable<int> PortIsUsed()
            {
                var ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();
                var ipsTCP = ipGlobalProperties.GetActiveTcpListeners();
                var ipsUDP = ipGlobalProperties.GetActiveUdpListeners();
                var tcpConnInfoArray = ipGlobalProperties.GetActiveTcpConnections();
    
                return ipsTCP.Select(ep => ep.Port)
                    .Concat(ipsUDP.Select(ep => ep.Port))
                    .Concat(tcpConnInfoArray.Select(conn => conn.LocalEndPoint.Port))
                    .ToList();
            }
    
            private static bool PortIsAvailable(int port)
            {
                return PortIsUsed().All(p => p != port);
            }
        }
    }
  • 相关阅读:
    如何控制递归的深度
    判断亲密数
    还是鸡兔同笼
    幂之和
    十进制转换成八进制
    单词译码
    笔试考试系统 ____pagelist使用
    笔试考试系统 ____项目部署
    笔试考试系统 ____成绩统计
    笔试考试系统 ____错题查看
  • 原文地址:https://www.cnblogs.com/yao2yao4/p/3258392.html
Copyright © 2020-2023  润新知