在C#中调用API获取网络信息和流量

简介: 原文 在C#中调用API获取网络信息和流量  最近一项目中要求显示网络流量,而且必须使用C#。 事实上,调用 IpHlpApi.dll 的 GetIfTable API 可以轻易获得网络信息和网络流量。

原文 在C#中调用API获取网络信息和流量 

最近一项目中要求显示网络流量,而且必须使用C#。

事实上,调用 IpHlpApi.dll 的 GetIfTable API 可以轻易获得网络信息和网络流量。只是要在C#中实现还是比较复杂。

先看看怎么定义该 API
[DllImport("IpHlpApi.dll")]
        extern static public uint GetIfTable(byte[] pIfTable, ref uint pdwSize, bool bOrder);

本来想把 pIfTable 定义为 IntPtr,但是这样的结果是,获取的信息是错误的(直到现在都不知是什么原因)。

但显然定义为 byte[] 是不能直接使用的。幸好在 Google Code Search 找到了三个类:




再定义一个 NetInfo 类,存储网络信息


OK,现在可以获取网络信息了

        /// <summary>
        /// Get IFTable
        /// </summary>
        /// <returns>MIB_IFTABLE Class</returns>
        private static MIB_IFTABLE GetAllIfTable()
        {
            //缓冲区大小
            uint dwSize = 0;

            //获取缓冲区大小
            uint ret = GetIfTable(null, ref dwSize, false);
            if (ret == 50)
            {
                //此函数仅支持于 win98/nt 系统
                return null;
            }

            //定义,获取 MIB_IFTABLE 对象
            MIB_IFTABLE tbl = new MIB_IFTABLE((int)dwSize);
            ret = GetIfTable(tbl.ByteArray, ref dwSize, false);

            //如果不成功
            if (ret != 0)
            {
                return null;
            }

            return tbl;
        }

        /// <summary>
        /// Get NetInfo Class
        /// </summary>
        /// <param name="row">MIB_IFROW Class</param>
        /// <returns>NetInfo Class</returns>
        private static NetInfo GetNetInfo(MIB_IFROW row)
        {
            NetInfo ninfo = new NetInfo();
            ninfo.Index = row.dwIndex;
            ninfo.Name = Encoding.ASCII.GetString(row.bDescr, 0, (int)row.dwDescrLen);
            ninfo.PhysAddr = GetPhysAddr(row.bPhysAddr, (int)row.dwPhysAddrLen);
            ninfo.Type = (NetType)row.dwType;
            ninfo.Status = (NetState)row.dwOperStatus;
            ninfo.Speed = row.dwSpeed;
            ninfo.InErrors = row.dwInErrors;
            ninfo.InOctets = row.dwInOctets;
            ninfo.InUnknownProtos = row.dwInUnknownProtos;
            ninfo.OutErrors = row.dwOutErrors;
            ninfo.OutOctets = row.dwOutOctets;
            return ninfo;
        }

/// <summary>
        /// 获取所有的网络信息
        /// </summary>
        /// <returns>NetInfo 网络信息范型</returns>
        public static List<NetInfo> GetAllNetInfo()
        {
            //定义范型
            List<NetInfo> ninfos = new List<NetInfo>();

            //定义,获取 MIB_IFTABLE 对象
            MIB_IFTABLE tbl = GetAllIfTable();

            //如果成功
            if (tbl != null)
            {
                tbl.Deserialize();
                for (int i = 0; i < tbl.Table.Length; i++)
                {
                    ninfos.Add(GetNetInfo(tbl.Table[i]));
                }
            }

            return ninfos;
        }

PS:事实上,我把获取网络、CPU、内存、磁盘、进程信息等功能封装起来,并做了一个比较完善的 Windows 任务管理器,整理完后发布源码。

 

目录
相关文章
|
10天前
|
SQL 监控 安全
构筑数字堡垒:网络安全与信息保护的深层剖析
【4月更文挑战第9天】在数字化时代,网络安全和信息安全已成为维护个人隐私、企业数据和国家安全不可或缺的一环。本文深入探讨了网络安全漏洞的形成机理、加密技术的进展,以及提升安全意识的重要性。通过对现有安全挑战的分析,提出了一系列创新的防御策略,并强调了构建一个全面的信息保护体系的必要性。
|
18天前
|
存储 安全 网络安全
云端防御战线:云计算环境下的网络安全与信息保护
在信息技术迅猛发展的今天,云计算作为支撑数字转型的重要基石,其安全性牵动着企业生存与发展的命脉。本文深入探讨了云计算环境中面临的安全威胁和挑战,并提出了一系列创新的安全策略和技术解决方案。通过综合分析公有云、私有云以及混合云服务模型中的安全需求,文章构建了一个多层次、全方位的网络安全防护体系。此外,针对数据加密、身份验证、访问控制等关键技术进行了深入剖析,旨在为读者提供一套系统的信息安全保护指南,确保在享受云计算带来的便利时,数据和资源的安全性不被妥协。
34 8
|
27天前
|
监控 安全 网络安全
云端防御战线:云计算中的网络安全与信息保护策略
在数字化时代,云计算为企业提供了弹性、可扩展的资源解决方案,但同时也带来了复杂的安全挑战。本文深入探讨了在云服务框架下,网络安全和信息保护的重要性,分析了当前云平台面临的主要安全威胁,并提出了一系列创新的防护机制。从数据加密到访问控制,再到持续监控与合规性管理,文章不仅阐述了各项技术的原理与实施策略,还讨论了如何构建一个多层次、动态的安全体系来保障云环境中的数据完整性和服务可靠性。
|
28天前
|
域名解析 网络协议 Linux
【Shell 命令集合 网络通讯 】Linux 设置和管理网络接口配置信息 netconfig命令 使用指南
【Shell 命令集合 网络通讯 】Linux 设置和管理网络接口配置信息 netconfig命令 使用指南
49 1
|
28天前
|
监控 网络协议 Linux
【Shell 命令集合 网络通讯 】Linux 显示网络 连接、路由表和网络接口信息 netstat命令 使用指南
【Shell 命令集合 网络通讯 】Linux 显示网络 连接、路由表和网络接口信息 netstat命令 使用指南
54 1
|
4天前
|
存储 安全 网络安全
云端防御:在云计算时代维护网络安全与信息完整性
【4月更文挑战第15天】 随着企业和个人用户日益依赖云服务,云计算环境的安全性已成为技术发展的一个关键挑战。本文探讨了云计算平台面临的安全威胁、信息安全的关键策略以及实施有效防护措施的必要性。我们将分析数据加密、身份验证和访问控制等核心技术,并讨论如何通过综合方法保护云资源以应对不断演变的网络攻击。
11 2
|
7天前
|
人工智能 安全 网络安全
云端守卫:云计算环境中的网络安全与信息保护策略
【4月更文挑战第12天】 随着企业与个人日益依赖云服务,数据存储、处理和流通的边界愈发模糊。本文探讨了在动态且复杂的云计算环境中,如何通过创新的安全技术和策略来维护网络安全和保障信息完整性。重点分析了包括身份认证、数据加密、访问控制及入侵检测等在内的关键安全措施,并提出了多层次防御模型,以增强云服务用户的信心,同时促进云计算生态系统的健康发展。
|
11天前
|
存储 安全 网络安全
云端防御策略:确保云服务中的网络安全与信息完整性
【4月更文挑战第8天】在数字化转型的浪潮中,云计算已成为企业存储、处理和分析数据的首选平台。然而,随着云服务的广泛采用,网络安全和信息完整性的挑战也日益凸显。本文将深入探讨针对云环境的安全威胁、当前的防御机制以及未来发展趋势,旨在为读者提供一个全面了解如何在享受云计算便利的同时,确保网络和信息的安全。
|
15天前
|
存储 安全 网络安全
云端防御线:云计算中的网络安全与信息保护
【4月更文挑战第4天】 在数字化时代,云计算已成为企业及个人存储和处理数据的重要工具。伴随其便捷性和可扩展性的同时,也带来了诸多安全挑战。本文深入探讨了云计算环境下的网络安全策略和信息安全实践,旨在为读者提供一套综合性的防护框架。通过对云服务模型的分析,我们揭示了不同服务层级下的安全风险,并结合最新的加密技术、身份认证机制以及入侵检测系统,构建了一个多维防御体系。此外,文章还讨论了合规性与审计的重要性,并通过案例研究,展示了成功的安全策略如何有效地减少潜在的网络威胁。
22 6
|
26天前
|
存储 SQL 安全
数字堡垒的构筑者:网络安全与信息保护
在数字化时代,数据成为了新的货币,而网络安全则是保护这些“货币”不被非法获取、篡改或破坏的关键。本文深入探讨了网络安全漏洞的本质、加密技术的进展以及提升安全意识的重要性。通过对当前网络威胁的剖析,我们提出了一系列防御策略,旨在为个人用户、企业乃至政府部门打造坚固的数字防线。

热门文章

最新文章