Libs/NetProcessAPI.cs

(开头部分) 9KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;

namespace SocketsViewer.Libs
{
    public class NetProcessAPI
    {

        /// <summary>
        /// 获取TCP连接对象
        /// </summary>
        /// <param name="pTcpTable"></param>
        /// <param name="dwOutBufLen"></param>
        /// <param name="sort"></param>
        /// <param name="ipVersion"></param>
        /// <param name="tblClass"></param>
        /// <param name="reserved"></param>
        /// <returns></returns>
        [DllImport("iphlpapi.dll", SetLastError = true)]
        public static extern uint GetExtendedTcpTable(IntPtr pTcpTable, ref int dwOutBufLen, bool sort, int ipVersion, TCP_TABLE_CLASS tblClass, uint reserved = 0);


        /// <summary>
        /// 获取UDP连接对象
        /// </summary>
        /// <param name="pTcpTable"></param>
        /// <param name="dwOutBufLen"></param>
        /// <param name="sort"></param>
        /// <param name="ipVersion"></param>
        /// <param name="tblClass"></param>
        /// <param name="reserved"></param>
        /// <returns></returns>
        [DllImport("iphlpapi.dll", SetLastError = true)]
        public static extern uint GetExtendedUdpTable(IntPtr pUdpTable, ref int dwOutBufLen, bool sort, int ipVersion, UDP_TABLE_CLASS tblClass, uint reserved = 0);


        /// <summary>
        ///获取TCP连接对象
        /// </summary>
        /// <returns></returns>
        public static TcpRow[] GetAllTcpConnections()
        {
            TcpRow[] tTable;
            int AF_INET = 2;    // IP_v4
            int buffSize = 0;
            uint ret = GetExtendedTcpTable(IntPtr.Zero, ref buffSize, true, AF_INET, TCP_TABLE_CLASS.TCP_TABLE_OWNER_PID_ALL);
            IntPtr buffTable = Marshal.AllocHGlobal(buffSize);
            try
            {
                ret = GetExtendedTcpTable(buffTable, ref buffSize, true, AF_INET, TCP_TABLE_CLASS.TCP_TABLE_OWNER_PID_ALL);
                if (ret != 0)
                {
                    return null;
                }
                TcpTable tab = (TcpTable)Marshal.PtrToStructure(buffTable, typeof(TcpTable));
                IntPtr rowPtr = (IntPtr)((long)buffTable + Marshal.SizeOf(tab.dwNumEntries));
                tTable = new TcpRow[tab.dwNumEntries];

后面还有 247 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。