在c#中以编程方式查询网卡的入站/出站IPv4数据包计数统计

Posted

技术标签:

【中文标题】在c#中以编程方式查询网卡的入站/出站IPv4数据包计数统计【英文标题】:query inbound / outbound IPv4 packet count statistics of network card programatically in c# 【发布时间】:2012-12-25 07:22:11 【问题描述】:

我想获取有关网卡发送和接收数据包计数(IP 级别:包括 TCP、UDP 等)的统计信息。

如何从 Windows 中查询该信息?

【问题讨论】:

【参考方案1】:

WMI。

在 C# 中不容易使用,但可能。

所需课程的文档位于

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_perfformatteddata_tcpip_networkinterface.asp

【讨论】:

我无法打开超链接,请您验证它是否存在 :我在 MSDN 中查看了 Win32_PerfFormattedData_Tcpip_NetworkInterface 类的属性,似乎大多数数据的类型(value/s)是每秒数据包或每秒字节数,没有可用的累积计数?跨度> 【参考方案2】:

首先你有

using System.Net.NetworkInformation;

接下来是:

var iFaceArr = NetworkInterface.GetAllNetworkInterfaces();
NetworkInterface iface = iFaceArr[0];
IPv4InterfaceStatistics iFaceStats = iface.GetIPv4Statistics();

那么你有这些变量:

iFaceStats.UnicastPacketsReceived;
iFaceStats.UnicastPacketsSent;
iFaceStats.NonUnicastPacketsReceived;
iFaceStats.NonUnicastPacketsSent;

Reference

【讨论】:

【参考方案3】:

你可以看看Pcap.Net。

Getting the list of Live Devices on the local host.
Reading packets from Live Devices (Network Devices) and Offline Devices (Files) using the different WinPcap methods.
Receiving statistics on the entire capture.
Receiving statistics of packets instead of the full packets.
Using different sampling methods.
Applying Berkley Packet Filters.
Sending packets to Live Devices directly or using WinPcap's send queues.
Dumping packets to Pcap files.
Using Enumerables to receive packets (and LINQ).

请注意,您的系统上必须安装 winpcap 驱动程序。

【讨论】:

-1。严重地?安装驱动程序以执行您可以使用 WMI 开箱即用的操作?让程序仅在必要时安装的可靠原则发生了什么? 我猜它和 KEEP IT SIMPLE SILLY 搞砸了,他们分手了。

以上是关于在c#中以编程方式查询网卡的入站/出站IPv4数据包计数统计的主要内容,如果未能解决你的问题,请参考以下文章

Pipeline的入站流程详解(netty源码死磕7)

防止比特币病毒最快捷的方式

Spring集成+文件读取消息源_入站通道适配器+出站网关。

网路防火墙iptables

如何用命令查看防火强开启的入站规则端口号

AWS 安全组设置指南