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-tw/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

發表回復

登錄後才能評論