登錄 |創建賬號 |找回密碼
查看: 76|回復: 0

windows下c++獲取網絡信息

[複製鏈接]

23

主題

6

回帖

130

積分

管理員

Rank: 9Rank: 9Rank: 9

積分
130
發表於 2024-3-23 21:00:24 | 顯示全部樓層 |閱讀模式
  1. #include <windows.h>
  2. #include <iphlpapi.h>
  3. #include <iostream>
  4. #include <vector>

  5. #pragma comment(lib, "iphlpapi.lib")

  6. // 获取所有磁盘的信息
  7. void GetDrivesInfo() {
  8.     DWORD driveMask = GetLogicalDrives();
  9.     int i = 0;
  10.     while (driveMask != 0) {
  11.         if (driveMask & 1) {
  12.             std::cout << "Drive " << char('A' + i) << ":\\ detected" << std::endl;
  13.         }
  14.         i++;
  15.         driveMask >>= 1;
  16.     }
  17. }

  18. // 获取网络适配器信息和IP地址
  19. void GetNetworkInfo() {
  20.     ULONG outBufLen = sizeof(IP_ADAPTER_INFO);
  21.     PIP_ADAPTER_INFO pAdapterInfo = (IP_ADAPTER_INFO*)malloc(outBufLen);

  22.     // Make an initial call to GetAdaptersInfo to get the necessary size into the outBufLen variable
  23.     if (GetAdaptersInfo(pAdapterInfo, &outBufLen) == ERROR_BUFFER_OVERFLOW) {
  24.         free(pAdapterInfo);
  25.         pAdapterInfo = (IP_ADAPTER_INFO*)malloc(outBufLen);
  26.     }

  27.     if (GetAdaptersInfo(pAdapterInfo, &outBufLen) == NO_ERROR) {
  28.         PIP_ADAPTER_INFO pAdapter = pAdapterInfo;
  29.         while (pAdapter) {
  30.             std::cout << "Adapter Name: " << pAdapter->AdapterName << std::endl;
  31.             std::cout << "Adapter Desc: " << pAdapter->Description << std::endl;
  32.             for (IP_ADDR_STRING* pIPAddr = &pAdapter->IpAddressList; pIPAddr != NULL; pIPAddr = pIPAddr->Next) {
  33.                 std::cout << "IP Address: " << pIPAddr->IpAddress.String << std::endl;
  34.                 std::cout << "IP Mask: " << pIPAddr->IpMask.String << std::endl;
  35.             }
  36.             std::cout << "Gateway: " << pAdapter->GatewayList.IpAddress.String << std::endl << std::endl;
  37.             pAdapter = pAdapter->Next;
  38.         }
  39.     }

  40.     if (pAdapterInfo) {
  41.         free(pAdapterInfo);
  42.     }
  43. }

  44. int main() {
  45.     std::cout << "Getting drives information..." << std::endl;
  46.     GetDrivesInfo();
  47.     std::cout << "\nGetting network information..." << std::endl;
  48.     GetNetworkInfo();
  49.     return 0;
  50. }
複製代碼


回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 創建賬號

本版積分規則

Archiver|手機版|小黑屋|九派社區 ( 苏ICP备07501547号-12 )

GMT+8, 2024-5-21 06:35 , Processed in 0.051472 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回復 返回頂部 返回列表