欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#獲取電腦上所有打開端口的詳細連接信息

admin
2025年2月12日 9:50 本文熱度 1030

在C#中獲取電腦上所有打開端口的詳細連接信息通常涉及到網絡編程和系統級別的操作。這可以通過多種方式實現,但最常見的方法之一是使用System.Net命名空間中的類,并結合系統級別的API調用。下面是一些步驟和示例代碼,幫助你獲取電腦上所有打開端口的詳細連接信息。


方法1:使用System.Net.NetworkInformation

System.Net.NetworkInformation命名空間提供了訪問網絡接口信息和網絡統計信息的功能。你可以使用IPGlobalProperties.GetIPGlobalProperties()來獲取當前計算機的IP全局屬性,然后使用GetActiveTcpListeners()和GetActiveTcpConnections()方法來查看TCP連接。

示例代碼:

using System;

using System.Net;

using System.Net.Sockets;

using System.Collections.Generic;

 

class Program

{

    static void Main()

    {

        // 獲取當前計算機的IP全局屬性

        IPGlobalProperties ipGlobalProperties = IPGlobalProperties.GetIPGlobalProperties();

 

        // 獲取當前計算機的TCP監聽端口

        var tcpListeners = ipGlobalProperties.GetActiveTcpListeners();

        Console.WriteLine("Active TCP Listeners:");

        foreach (var listener in tcpListeners)

        {

            Console.WriteLine($"Port: {listener.Port}");

        }

 

        // 獲取當前計算機的TCP連接(需要管理員權限)

        var tcpConnections = ipGlobalProperties.GetActiveTcpConnections();

        Console.WriteLine("\nActive TCP Connections:");

        foreach (var connection in tcpConnections)

        {

            Console.WriteLine($"LocalEndPoint: {connection.LocalEndPoint}, RemoteEndPoint: {connection.RemoteEndPoint}, State: {connection.State}");

        }

    }

}



方法2:使用P/Invoke調用Windows API

如果你需要更詳細的控制或者需要訪問更多底層信息,你可以使用P/Invoke調用Windows API,如netstat命令的底層API。例如,使用netstat -ano的底層API可以讓你獲取到每個連接的PID等信息。

示例代碼(使用P/Invoke調用netstat):

using System;

using System.Diagnostics;

using System.Runtime.InteropServices;

using System.Text;

 

class Program

{

    [DllImport("iphlpapi.dll", ExactSpelling = true)]

    private static extern int SendARP(uint ip, uint mac, byte[] pa, ref uint size);

    [DllImport("iphlpapi.dll", SetLastError = true)]

    private static extern uint GetIpAddrTable(IntPtr pIPAddrTable, ref uint pSize, bool bOrder);

    [DllImport("iphlpapi.dll", SetLastError = true)]

    private static extern int GetExtendedTcpTable(IntPtr pTcpTable, ref uint dwOutBufLen, bool sort, int ipVersion, TcpTableType tableClass, uint reserved);

    private enum TcpTableType : uint { OwnerPidOnly = 5 }; // 只獲取PID信息

    private const int ERROR_INSUFFICIENT_BUFFER = 122; // 緩沖區不足錯誤代碼

    private const int IP_ADAPTER_INFO_SIZE = 8 * 1024; // 適配器信息緩沖區大小估計值

    private const int MAX_ADAPTER_DESCRIPTION_LENGTH = 128; // 適配器描述最大長度

    private const int MAX_ADAPTER_NAME_LENGTH = 256; // 適配器名稱最大長度

    private const int MAX_ADAPTER_ADDRESS_LENGTH = 8; // 適配器地址最大長度(以字節為單位)

    private const int GAA_FLAG_INCLUDE_PREFIX = 16; // 標志位:包含前綴長度信息

    private const int MIB_TCP_STATE_LISTENING = 2; // TCP狀態:監聽狀態

    private const int MIB_TCP_STATE_ESTABLISHED = 4; // TCP狀態:已建立連接狀態

    private const int MIB_TCP_STATE_CLOSE_WAIT = 8; // TCP狀態:關閉等待狀態等...

    // 其他必要的結構和常量定義...

}

注意:直接使用P/Invoke調用底層API相對復雜且容易出錯,特別是涉及到權限和網絡編程的細節問題。通常建議先嘗試使用System.Net.NetworkInformation類,如果需要更詳細的信息再考慮使用P/Invoke。此外,獲取某些信息可能需要管理員權限。對于大多數應用場景,直接使用System.Net.NetworkInformation應該已經足夠。


相關文檔:

C#獲取電腦上所有打開端口的詳細連接信息[1]
  http://29190.oa22.cn

【C#】如何判斷當前是否開啟了遠程桌面連接[4927]
  http://16624.oa22.cn

C#如何判斷Windows Server遠程桌面有異常登錄,并獲知當前登錄用戶名?[3550]
  http://16722.oa22.cn


該文章在 2025/2/12 10:11:15 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved