用c++代码获取本机带宽使用占比
时间: 2024-02-09 10:13:05 浏览: 95
c++ ,vc,mfc,获取带宽占用率
5星 · 资源好评率100%
获取本机带宽使用占比需要使用操作系统提供的API来获取网络信息。以下是一个使用C++获取本机带宽使用占比的简单代码示例:
```c++
#include <iostream>
#include <windows.h>
#include <wininet.h>
#pragma comment(lib, "wininet.lib")
int main()
{
DWORD dwSize = sizeof(DWORD);
DWORD dwCurBps = 0, dwMaxBps = 0;
// 获取本机网络带宽信息
if (GetPerTcpConnectionEStats(NULL, TcpConnectionEstatsBandwidth, NULL, 0, dwSize, 0) != ERROR_INSUFFICIENT_BUFFER)
{
std::cout << "获取网络带宽信息失败" << std::endl;
return 1;
}
PMIB_TCPROW2 pTcpRow = (PMIB_TCPROW2)malloc(dwSize);
if (pTcpRow == NULL)
{
std::cout << "分配内存失败" << std::endl;
return 1;
}
if (GetPerTcpConnectionEStats(NULL, TcpConnectionEstatsBandwidth, NULL, 0, (PBYTE)pTcpRow, dwSize, 0) != NO_ERROR)
{
std::cout << "获取网络带宽信息失败" << std::endl;
free(pTcpRow);
return 1;
}
dwCurBps = pTcpRow->dwCurrentBandwidthBps;
dwMaxBps = pTcpRow->dwMaxBandwidthBps;
free(pTcpRow);
// 计算本机带宽使用占比
if (dwMaxBps > 0)
{
double fUsage = (double)dwCurBps / (double)dwMaxBps * 100.0;
std::cout << "本机带宽使用占比:" << fUsage << "%" << std::endl;
}
else
{
std::cout << "无法获取最大带宽值" << std::endl;
}
return 0;
}
```
这段代码使用了Windows提供的GetPerTcpConnectionEStats函数来获取TCP连接的带宽信息,然后计算出本机的带宽使用占比。需要注意的是,该函数只在Windows Vista及以上版本的操作系统中可用。
阅读全文