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

当我们要创建一个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();
}

(0)

相关推荐

  • Myeclipse工程发布时端口占用问题的解决方法

    解决My eclipse 工程发布时端口占用问题 如果运行后如图的错,需要进行如下操作来解决: a:打开cmd,输入netstat -ano 找到本地地址为8080的最后一项的数字,这个数字就是端口号. b:再输入taskkill /t /pid 端口号数字 /f 来关闭此进程. c:注意每个命令后面不要加 ; 结尾,运行以上命令再重新运行工程即可.

  • Linux/window下怎样查看某个端口被哪个程序/进程占用

    Windows: C:/Users/ewanbao>netstat -aon|findstr "123" TCP 127.0.0.1:55123 0.0.0.0:0 LISTENING 5092 TCP 127.0.0.1:55123 127.0.0.1:55124 ESTABLISHED 5092 TCP 127.0.0.1:55124 127.0.0.1:55123 ESTABLISHED 5092 UDP 0.0.0.0:123 *:* 1416 UDP [::]:123

  • Tomcat 启动错误(8080端口被占用)处理方法

    错误描述: 2009-7-12 15:40:35 org.apache.coyote.http11.Http11BaseProtocol start 严重: Error starting endpoint java.net.BindException: Address already in use: JVM_Bind:8080 at org.apache.tomcat.util.net.PoolTcpEndpoint.initEndpoint(PoolTcpEndpoint.java:298)

  • Serv-U占用IIS的80端口造成冲突导致iis无法运行的解决方法(serv_u6-8版本)

    我们是怎么发现serv_u占用iis的80端口的呢,大家可以参考我们的这篇文章IIS 另一个程序正在使用此文件,进程无法访问. 如何查看哪个程序打开了tcp 80端口呢?使用"开放端口查看软件Active ports"就可以一目了然了. 下面是具体的解决方法:serv_u 6版本:大家可以通过设置下 pasv端口范围即可.serv_u 7-8版本 很多人在安装的时候没太注意,默认情况下开启了80和443端口的监听,如果你的这台服务器上有IIS在运行的话,便会造成冲突.冲突的现象表现在两

  • java中tomcat的80端口被占用问题解决

    今天遇见了这个端口被占用问题 然后各种百度 先是说 用命令 netstat -a -n -o 最后一个选项表示连接所在进程id. 找到8080端口的PID然后打开任务管理器, 切换到进程选项卡, 在菜单栏选择查看->选择列, 选择PID. 在列表中找到PID对应的进程就可以了然后发现占用端口的进程的PID为4 可无奈如何关闭都关闭不了这个进程 于是又百度了pid为4的进程 果然找到同样问题 解决办法是把world wide web publishing service这个服务关闭就没事了.pid

  • 80端口被Pid为4的未知程序占用导致Apache不能启动的解决方法

    今天在使用WAMP的时候发现它无法正常启动,一直卡在黄色的图标那里,我怀疑是80端口被占用了,于是在cmd里输入:netstat -ano,发现: 80端口被占用,而且PID是4,在任务管理器中查找,发现根本没有PID为4的进程. 后来我发现是一个叫做W3SVC的进程占用了80端口,它的描述是World Wide Web Publishing Service.停止这个进程之后,重新启动WAMP,就解决这个问题了.

  • 服务器 UDP端口占用几千个的解决办法

    先使用netstat -anb命令显示服务器上每个端口所对应的监听程序,因为显示的太多,无法一一看过来,所以只能采用: netstat -anb>C:\1.txt 命令,把输出结果存到C盘根目录下的1.txt文件中,慢慢查看. 查看后,得知所有这些udp端口均为dns.exe程序监听,这台服务器安装了DNS服务,难道中毒了? 在命令提示符下,输入: cd c: 切换C盘根目录,执行: dir dns.exe /s/a 命令进行全盘检索dns.exe程序,经过N久之后,系统检索出5个dns.exe

  • apache 80端口被iis或其他服务占用怎么办

    iis修改80端口的方法 如果要修改iis不使用80方法很简单,在我们的iis管理器中找到,iis管理然后把80改成81即可 Apache修改监听端口的方法为: 打开 httpd.conf 修改 Listen 80 为 L第二世界整理发布isten 81 Apache可以同时监听一个以上的端口实现多个Http服务 只要添一行 如 Listen 82 即可 同样IIS也可以修改默认的端口以避开冲突 修改方法类似 打开 Administrative Tools -> Internet Service

  • Linux下查看端口占用进程号,程序名的方法

    linux下查看端口占用情况: 1. 查看哪个进程占用了819端口: case9-sghfofo:/usr/local/cnbj/tomcat-bj/bin # lsof -i:859 运行后的结果: COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME java 24907 root 31u IPv4 248905027 TCP *:859 (LISTEN) 由以上我们知道了859端口被进程号为24907的进程占用了, 是个java进程. 2. 查看进程

  • 解析关于wamp启动是80端口被占用的问题

    问题如下:网上有关于这个处理办法,说道:VS2010在更新了SP1后,会在开机时自动启动一个服务,占用WAMP的80端口,导致WAMP无法正常启动Apache.提示信息:Your port 80 is actually used by :Server: Microsoft-HTTPAPI/2.0Press Enter to exit...解决办法如下: 1. 进入控制面板→管理工具→服务. 2. 停止[Web 部署代理服务],并设置为手动或禁用状态,以防止下次开机再次占用Apache的80端口.

随机推荐