博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 获得空闲可用端口
阅读量:2436 次
发布时间:2019-05-10

本文共 1426 字,大约阅读时间需要 4 分钟。

转自论坛:

using System.Net.NetworkInformation;

/// <summary>

/// 获取第一个可用的端口号
/// </summary>
/// <returns></returns>
public static int GetFirstAvailablePort()
{
    int MAX_PORT = 6000; //系统tcp/udp端口数最大是65535           
    int BEGIN_PORT = 5000;//从这个端口开始检测

    for (int i = BEGIN_PORT; i < MAX_PORT; i++)

    {
        if (PortIsAvailable(i)) return i;
    }

    return -1;

}

/// <summary>

/// 获取操作系统已用的端口号
/// </summary>
/// <returns></returns>
public static IList PortIsUsed()
{
    //获取本地计算机的网络连接和通信统计数据的信息
    IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();

    //返回本地计算机上的所有Tcp监听程序

    IPEndPoint[] ipsTCP = ipGlobalProperties.GetActiveTcpListeners();

    //返回本地计算机上的所有UDP监听程序

    IPEndPoint[] ipsUDP = ipGlobalProperties.GetActiveUdpListeners();

    //返回本地计算机上的Internet协议版本4(IPV4 传输控制协议(TCP)连接的信息。

    TcpConnectionInformation[] tcpConnInfoArray = ipGlobalProperties.GetActiveTcpConnections();

    IList allPorts = new ArrayList();

    foreach (IPEndPoint ep in ipsTCP) allPorts.Add(ep.Port);
    foreach (IPEndPoint ep in ipsUDP) allPorts.Add(ep.Port);
    foreach (TcpConnectionInformation conn in tcpConnInfoArray) allPorts.Add(conn.LocalEndPoint.Port);

    return allPorts;

}

/// <summary>

/// 检查指定端口是否已用
/// </summary>
/// <param name="port"></param>
/// <returns></returns>
public static bool PortIsAvailable(int port)
{
    bool isAvailable = true;

    IList portUsed = PortIsUsed();

    foreach (int p in portUsed)

    {
        if (p == port)
        {
            isAvailable = false; break;
        }
    }

    return isAvailable;
}

转载地址:http://bygmb.baihongyu.com/

你可能感兴趣的文章
windows server 2003的设置使用(转)
查看>>
优化Win2000的NTFS系统(转)
查看>>
IE漏洞可使黑客轻易获取私人信息(转)
查看>>
脱机备份与恢复实战(转)
查看>>
WLINUX下的DNS服务器设置(转)
查看>>
游戏引擎剖析(二)(转)
查看>>
sms发mms C语言源码(转)
查看>>
窝CDMA网络中移动IP接入Internet(转)
查看>>
实现MMS增值业务的关键技术(转)
查看>>
Vista被破解 一个小程序可成功激活(转)
查看>>
SEO作弊常见方法和形式(转)
查看>>
蓝芽技术的原理和应用(2)(转)
查看>>
解决接通电源后自动开机问题(转)
查看>>
实例编程:用VC写个文件捆绑工具(转)
查看>>
教你如何用手工迅速剿灭QQ广告弹出木马(转)
查看>>
Windows系统维护完全图形化攻略(转)
查看>>
WAP2.0移动互联(转)
查看>>
WAP手机防毒攻略(转)
查看>>
如何建立C++ BuilderX 1.5 Mobile Edition开发环境(转)
查看>>
蓝牙套接字概述(转)
查看>>