如何从Windows程序访问类似netstat的以太网统计信息

如何从Windows程序访问类似netstat的以太网统计信息,第1张

概述如何从Windows程序访问类似netstat的以太网统计信息

如何从C / C ++代码如netstat -e访问以太网统计信息?

Interface Statistics Received Sent Bytes 21010071 15425579 Unicast packets 95512 94166 Non-unicast packets 12510 7 discards 0 0 Errors 0 3 UnkNown protocols 0

如何使用select()来等待以太网接口状态更改?

在windows中使用python获取ipconfig结果

windows Ndis驱动程序:并行读取/写入单个设备(IRP_MJ_READ / WRITE)

想知道如何使用ioctl / SIocgIFADDR / SIocgIFCONF获取Mac OS X上的以太网接口信息?

我如何接收错误的以太网帧并禁用CRC / FCS计算?

启动网络统计的一个好地方是windows IPHelper函数中的GetIpStatistics调用。

还有一些可能更便携的方法:

SNMP。 需要在计算机上启用SNMP,但显然也可以用于检索远程计算机的统计信息。

将“netstat”的输出传送到您的应用程序中,并从文本中取消值。

WMI将提供这些读数:

SELECT * FROM Win32_PerfFormattedData_Tcpip_IP SELECT * FROM Win32_PerfFormattedData_Tcpip_TCP SELECT * FROM Win32_PerfFormattedData_Tcpip_UDP SELECT * FROM Win32_PerfFormattedData_Tcpip_ICMP SELECT * FROM Win32_PerfFormattedData_Tcpip_Networkinterface

这些类在windows XP或更新版本上可用。 您可能不得不退出windows 2000上匹配的“Win32_PerfRawData”类,然后再执行一些数学运算,然后才能显示输出。

在MSDN中查找所有这些文档 。

Szia,

来自http://en.wikipedia.org/wiki/Netstat

在windows平台上,可以通过调用IP助手API或IPHLPAPI.DLL中的GetTcptable和GetUdptable函数来获取netstat信息。 返回的信息包括本地和远程IP地址,本地和远程端口以及(对于GetTcptable)TCP状态代码。 除windows附带的命令行netstat.exe工具外,还有基于GUI的可用的netstat程序。 在windows平台上,只有在网络连接中的网络适配器的属性中安装Internet协议(TCP / IP)协议作为组件时,才能使用此命令。

在CodeProject的MFC示例: http : //www.codeproject.com/KB/applications/wnetstat.aspx

您可能会发现一个可行的WMI性能计数器 ,例如Win32_PerfRawData_Tcpip_NetworkInterface 。

让我自己回答,就像我在另一个论坛上所说的一样。

WMI是好的,但是使用IpHlpAPI更容易:

#include <winsock2.h> #include <iphlpAPI.h> int main(int argc,char *argv[]) { PMIB_IFtable pIftable; MIB_IFROW ifRow; PMIB_IFROW pIfRow = &ifRow; DWORD DWSize = 0; // first call returns the buffer size needed DWORD retv = GetIftable(pIftable,&DWSize,true); if (retv != ERROR_INSUFFICIENT_BUFFER) WriteErrorAndExit(retv); pIftable = (MIB_IFtable*)malloc(DWSize); retv = GetIftable(pIftable,true); if (retv != NO_ERROR) WriteErrorAndExit(retv); // Get index int i,j; printf("tNum EntrIEs: %ldnn",pIftable->DWNumEntrIEs); for (i = 0; i < (int) pIftable->DWNumEntrIEs; i++) { pIfRow = (MIB_IFROW *) & pIftable->table[i]; printf("tIndex[%d]:t %ldn",i,pIfRow->DWIndex); printf("tInterfacename[%d]:t %ws",pIfRow->wszname); printf("n"); printf("tDescription[%d]:t ",i); for (j = 0; j < (int) pIfRow->DWDescrLen; j++) printf("%c",pIfRow->bDescr[j]); printf("n"); ...

看看Google Groups,原来的netstats源码已经贴了很多次了(win32 API)

如上面的答案所示,WMI性能计数器包含一些数据。 请注意,在更高版本的windows中,perf计数器在v4 vs v6中被分解,所以查询是:

SELECT * FROM Win32_PerfFormattedData_Tcpip_IPv4

SELECT * FROM Win32_PerfFormattedData_Tcpip_TCPv4

SELECT * FROM Win32_PerfFormattedData_Tcpip_UDPv4

SELECT * FROM Win32_PerfFormattedData_Tcpip_ICMP

SELECT * FROM Win32_PerfFormattedData_Tcpip_IPv6

SELECT * FROM Win32_PerfFormattedData_Tcpip_TCPv6

SELECT * FROM Win32_PerfFormattedData_Tcpip_UDPv6

SELECT * FROM Win32_PerfFormattedData_Tcpip_ICMPv6

总结

以上是内存溢出为你收集整理的如何从Windows程序访问类似netstat的以太网统计信息全部内容,希望文章能够帮你解决如何从Windows程序访问类似netstat的以太网统计信息所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1293340.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存