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/zh-hant/n/335139.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
FZUTL的頭像FZUTL
上一篇 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

發表回復

登錄後才能評論