Windows端口占用

一、端口与网络通信

端口号用于在网络通信时标识通信端点,是一种抽象的概念。在Windows中,共有65,535个端口号,其中从0至1023为系统保留端口,被系统或常用应用程序占用,一般要求管理员权限才能绑定。

使用网络通信的程序,需要将数据发送给特定的端口,接收方也是通过绑定监听端口被动接收数据,这些端口可能会被恶意程序滥用,导致占用端口的现象。

二、如何查看端口占用情况

在Windows操作系统中, Task Manager是最常规的查看端口占用情况的工具。可以进入‘进程’标签页,点击‘打开资源监视器’,在资源监视器的‘网络’标签页中查看网络连接情况,包括TCP和UDP连接,以及对应端口及占用程序。

//获取TCP端口占用情况示例代码
var tcpConnections = IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpConnections();
foreach (TcpConnectionInformation tcpInfo in tcpConnections) {
    Console.WriteLine("Local Address: {0}:{1}\tRemote Address: {2}:{3}\tState: {4}", 
          tcpInfo.LocalEndPoint.Address, tcpInfo.LocalEndPoint.Port, 
          tcpInfo.RemoteEndPoint.Address, tcpInfo.RemoteEndPoint.Port, tcpInfo.State);
}

//获取UDP端口占用情况示例代码
var udpListeners = IPGlobalProperties.GetIPGlobalProperties().GetActiveUdpListeners();
foreach (IPEndPoint endPoint in udpListeners) {
    Console.WriteLine("Local Address: {0}:{1}", endPoint.Address, endPoint.Port);
}

三、如何释放端口占用

当端口被非正常占用时,会导致正常的网络通信受到阻碍,需要释放该端口的占用。常规的做法是关闭对应的程序或服务,但某些程序可能存在无法关闭的情况,这时可以使用一些工具进行强制终止占用端口的程序。

在Windows中,命令行工具netstat可以查询与TCP/IP连接相关的信息。使用netstat -a命令可以查询所有经过验证的TCP和UDP端口,包括监听状态和正在连接的端口。使用netstat -o命令可以查看占用端口的PID,根据PID可以重启、结束占用的进程。Windows 10以上版本可以使用’资源监视器’的网络标签页,右键要结束的进程名,选择‘终止进程’。

//释放当前已知端口号的占用示例代码
var processList = Process.GetProcesses();
foreach (Process process in processList) {
    try {
        var portList = IPGlobalProperties.GetIPGlobalProperties()
                .GetActiveTcpListeners().Select(p => p.Port)
                .Union(IPGlobalProperties.GetIPGlobalProperties()
                .GetActiveUdpListeners().Select(p => p.Port)).ToList();

        foreach (var port in portList) {
            var processName = process.ProcessName;
            var portUsed = process.GetNetStat(port, ProtocolType.Tcp).Concat(
                      process.GetNetStat(port, ProtocolType.Udp)).ToList();
            if (portUsed.Any()) {
                Console.WriteLine("Killing the process: {0}, which is listening on the port {1}", 
                      processName, port);
                process.Kill();
            }               
        }
    } catch (Exception ex) {
        Console.WriteLine(ex.Message);
    }
}

四、如何防止非法占用端口现象

为防止非法占用端口,我们可以在编写程序时考虑以下几个方面:

  • 选择闲置端口,不建议使用系统常用端口;
  • 确保不同程序之间不会占用同一端口;
  • 关闭不必要的监听服务;
  • 正确处理异常情况,释放占用的端口;
  • 使用防火墙等安全工具进行保护。

原创文章,作者:FZUTL,如若转载,请注明出处:https://www.506064.com/n/335139.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
FZUTLFZUTL
上一篇 2025-02-05 13:06
下一篇 2025-02-07 15:56

相关推荐

  • 如何在树莓派上安装Windows 7系统?

    随着树莓派的普及,许多用户想在树莓派上安装Windows 7操作系统。 一、准备工作 在开始之前,需要准备以下材料: 1.树莓派4B一台; 2.一张8GB以上的SD卡; 3.下载并…

    编程 2025-04-29
  • 如何配置Python环境变量在Windows 11

    在本文中,您将学习如何在Windows 11操作系统上配置Python环境变量的步骤。Python是一种高级编程语言,广泛用于编写Web应用程序、数据分析、人工智能和机器学习等。在…

    编程 2025-04-29
  • 两个域名指向同一IP不同端口打开不同网页的实现方法

    本文将从以下几个方面详细阐述两个域名指向同一个IP不同端口打开不同网页的实现方法。 一、域名解析 要实现两个域名指向同一个IP不同端口,首先需要进行域名解析。在域名解析的时候,将这…

    编程 2025-04-28
  • 如何在Windows系统下载和使用cygwin?

    如果你是一名Windows系统的开发者,你可能会遇到一个问题,那就是缺少Unix/Linux系统下常用的命令行工具,这时候,你可以使用cygwin来解决这个问题。 一、cygwin…

    编程 2025-04-27
  • 苹果电脑安装Windows教程

    下面将介绍如何在苹果电脑上安装Windows操作系统。 一、获取Windows操作系统镜像文件 首先,我们需要去Microsoft官网下载Windows操作系统的镜像文件。 步骤:…

    编程 2025-04-27
  • Python监听端口用法介绍

    本文将从Python监听端口的概念入手,详细介绍如何使用Python实现监听端口,并且讲解相关的基础知识。 一、端口及其概念 1、什么是端口? 端口是一种网络协议,它是通过计算机与…

    编程 2025-04-27
  • 如何使用Python调用Windows窗口?

    本文将为大家解答如何使用Python调用Windows窗口,并提供相关代码示例。 一、打开应用程序窗口 如果想要打开Windows上的一个应用程序,需要使用Python的os模块。…

    编程 2025-04-27
  • Python开发的程序能否在Windows下运行

    能够在Windows下运行是Python的一个优点之一。Python作为一种跨平台语言,可以很方便地在Windows系统上运行 一、Python在Windows上的安装 Pytho…

    编程 2025-04-27
  • Mininet开启导致Ryu端口冲突问题:解答

    Mininet是一种网络仿真工具,可以在一个单一主机上开启多个虚拟主机,并模拟各个主机之间的网络连接。而Ryu则是一款高性能轻量级的SDN控制器,其是基于Python实现的,具有灵…

    编程 2025-04-27
  • Windows下安装npm指南

    在当前互联网发展的时代,前端开发已经成为了程序员不可或缺的一个技能,随之而来的前端开发工具也逐渐多样化,而npm就是当下最流行的前端工具之一,下面我们就来详细介绍一下在Window…

    编程 2025-04-25

发表回复

登录后才能评论