欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c#检测端口是否被占用的简单实例

程序员文章站 2024-02-23 09:17:28
当我们要创建一个tcp/ip server connection ,我们需要一个范围在1000到65535之间的端口 。 但是本机一个端口只能一个程序监听,所以我们进行本...

当我们要创建一个tcp/ip server connection ,我们需要一个范围在1000到65535之间的端口 。

但是本机一个端口只能一个程序监听,所以我们进行本地监听的时候需要检测端口是否被占用。

命名空间system.net.networkinformation下定义了一个名为ipglobalproperties的类,我们使用这个类可以获取所有的监听连接,然后判断端口是否被占用,代码如下:

复制代码 代码如下:

public static bool portinuse(int port)
{
    bool inuse = false;

    ipglobalproperties ipproperties = ipglobalproperties.getipglobalproperties();
    ipendpoint[] ipendpoints = ipproperties.getactivetcplisteners();

    foreach (ipendpoint endpoint in ipendpoints)
    {
        if (endpoint.port == port)
        {
            inuse = true;
            break;
        }
    }

    return inuse;
}

我们使用httplistner类在8080端口启动一个监听,然后测试是否可以被检测出来,代码如下:

复制代码 代码如下:

static void main(string[] args)
{
    httplistener httplistner = new httplistener();
    httplistner.prefixes.add("http://*:8080/");
    httplistner.start();

    console.writeline("port: 8080 status: " + (portinuse(8080) ? "in use" : "not in use"));

    console.readkey();

    httplistner.close();
}