在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 任务管理器,整理完后发布源码。

 

目录
相关文章
|
6天前
|
弹性计算 JSON Shell
基于Web API的自动化信息收集和整理
【4月更文挑战第30天】
14 0
|
2天前
|
存储 安全 物联网
网络防御前线:洞悉网络安全漏洞与加固信息防线
【5月更文挑战第4天】 在数字化时代,网络安全已成为维护信息完整性、确保数据传输安全的关键阵地。本文将深入探讨网络安全领域的重要议题—包括识别和应对安全漏洞、应用加密技术以及提升个体和企业的安全意识。通过对这些关键要素的剖析,我们旨在为读者提供一个关于如何构建坚固网络防御体系的全面视角。
24 6
|
6天前
|
安全 算法 网络安全
数字堡垒的构筑者:网络安全与信息加密技术纵览
【4月更文挑战第30天】在数字化时代,数据如同虚拟世界中的流通货币,而网络安全则是保护这些数据的堡垒。本文深入探讨了网络安全漏洞的概念、危害及其产生的原因;同时详细介绍了加密技术的基本原理、类型以及它们在信息安全中的应用。此外,文章还强调了提升个人和企业的安全意识在构建安全防线中的重要性。通过分析当前网络威胁和防御策略的最新动态,旨在为读者提供全面的网络安全知识框架,帮助大家构建更加坚固的数字堡垒。
|
6天前
|
存储 安全 网络安全
云端防御:云计算环境中的网络安全与信息保护策略
【4月更文挑战第30天】 在数字化浪潮的推动下,云计算已成为企业及个人存储和处理数据的重要平台。随之而来的是对网络安全和信息保护的新挑战。本文将深入探讨云计算环境下的网络安全威胁,分析云服务模型(IaaS, PaaS, SaaS)中存在的安全漏洞,并提出一系列创新性的信息保护策略。通过这些策略,旨在为读者提供一个清晰的指导框架,以增强云环境的安全性和数据的保密性。
|
7天前
|
监控 安全 网络安全
云端防御:云计算环境中的网络安全与信息保护策略
【4月更文挑战第29天】 随着企业逐渐将数据和服务迁移到云平台,云计算的安全性已成为不容忽视的挑战。本文深入探讨了在动态且复杂的云计算环境中,如何实施有效的网络安全措施和信息保护策略。我们分析了当前云服务模型中存在的安全漏洞,并提出了一套多层次、综合性的安全框架,旨在增强数据隐私性、完整性以及服务的可用性。通过采用最新的加密技术、身份认证机制和持续监控手段,我们的目标是为使用云服务的组织提供一个可靠的安全指南。
|
8天前
|
云安全 安全 网络安全
构建安全防线:云计算环境中的网络安全与信息保护
【4月更文挑战第28天】 随着企业和个人日益依赖云服务,云计算的安全性已成为一个不可忽视的挑战。本文深入探讨了云计算平台中的网络安全和信息保护策略,包括最新的加密技术、身份验证协议以及入侵检测系统。通过对现有安全框架的分析,提出了一系列创新的安全措施,旨在提高数据保密性、完整性和可用性。文章还讨论了未来云计算安全研究的潜在方向,为云服务提供商和用户之间的信任建立提供了新的视角。
|
8天前
|
云安全 安全 网络安全
云端防御战线:云计算中的网络安全与信息保护策略
【4月更文挑战第28天】 随着企业逐渐将数据和服务迁移至云端,云计算的便捷性和可扩展性带来了前所未有的机遇。然而,这种转变也暴露了组织面临的新型安全威胁和挑战。本文深入探讨了在云计算环境中实施有效的网络安全和信息保护措施的必要性,分析了当前云服务中存在的安全漏洞,并提出了一系列切实可行的防御策略。通过采用先进的加密技术、身份验证协议、入侵检测系统以及细粒度的访问控制,我们能够构建一个既灵活又坚固的防御体系,确保数据和应用程序的安全性。
|
9天前
|
监控 安全 网络安全
云端防御战线:云计算环境下的网络安全与信息保护策略
【4月更文挑战第27天】 随着企业和个人日益依赖云服务,云计算环境的安全性成为了信息安全领域的一个焦点。本文深入探讨了云计算中的关键安全挑战,分析了云服务模型(IaaS, PaaS, SaaS)在安全方面的不同需求,并提出了一系列针对性的保护措施。文章不仅涵盖了传统的网络安全策略,例如入侵检测和防火墙,还讨论了数据加密、身份认证、访问控制以及安全事件管理等先进技术的应用。通过综合分析,本文旨在为读者提供一套全面的参考框架,以强化其云环境中的网络安全和信息保护能力。
|
10天前
|
存储 SQL 安全
网络防御先锋:洞悉网络安全漏洞与加固信息防线
【4月更文挑战第26天】 在数字化的浪潮中,网络安全和信息安全已成为守护每个组织和个人数据资产的堡垒。本文将深入探讨网络安全领域内常见的安全漏洞类型、加密技术的最新进展以及提升安全意识的重要性。通过对这些关键领域的剖析,读者将获得构建坚固信息防线的知识武装,以应对日益复杂的网络威胁。
19 5
|
11天前
|
云安全 安全 网络安全
云端防御:云计算环境中的网络安全与信息保护策略
【4月更文挑战第25天】 随着企业和个人日益依赖云服务,确保在虚拟化和多租户架构中的数据安全成为关键挑战。本文深入探讨了云计算环境下的网络安全威胁,分析了当前信息安全的最佳实践,并提出了综合防御策略。重点讨论了数据加密、访问控制、入侵检测以及安全事件响应等方面,旨在为读者提供一套全面的云安全解决方案框架。