vc实现检测计算机上所有网络的连接状态,显示网络连接名字,IP地址,MAC地址等等信息
1条回答 默认 最新
- ChatGPTᴼᴾᴱᴺᴬᴵ 2023-03-24 20:03关注
该回答引用ChatGPT-3.5
以下是用C++实现检测计算机上所有网络连接状态的示例代码:
#include <iostream> #include <windows.h> #include <iphlpapi.h> #include <stdio.h> #pragma comment(lib, "IPHLPAPI.lib") using namespace std; int main() { DWORD dwRetVal = 0; ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO); PIP_ADAPTER_INFO pAdapterInfo = (IP_ADAPTER_INFO *)malloc(sizeof(IP_ADAPTER_INFO)); if (pAdapterInfo == NULL) { printf("Error allocating memory needed to call GetAdaptersinfo\n"); return 1; } // Make an initial call to GetAdaptersInfo to get the necessary size of buffer dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen); if (dwRetVal == ERROR_BUFFER_OVERFLOW) { free(pAdapterInfo); pAdapterInfo = (IP_ADAPTER_INFO *)malloc(ulOutBufLen); if (pAdapterInfo == NULL) { printf("Error allocating memory needed to call GetAdaptersinfo\n"); return 1; } dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen); } if (dwRetVal != NO_ERROR) { printf("GetAdaptersInfo failed with error: %d\n", dwRetVal); return 1; } PIP_ADAPTER_INFO pAdapter = pAdapterInfo; while (pAdapter) { printf("Network Connection Name: %s\n", pAdapter->AdapterName); printf("IP Address: %s\n", pAdapter->IpAddressList.IpAddress.String); printf("Subnet Mask: %s\n", pAdapter->IpAddressList.IpMask.String); printf("Default Gateway: %s\n", pAdapter->GatewayList.IpAddress.String); printf("MAC Address: "); for (int i = 0; i < pAdapter->AddressLength; i++) { if (i == (pAdapter->AddressLength - 1)) { printf("%.2X\n", (int)pAdapter->Address[i]); } else { printf("%.2X-", (int)pAdapter->Address[i]); } } printf("\n"); pAdapter = pAdapter->Next; } free(pAdapterInfo); return 0; }
代码通过使用Windows API中的GetAdaptersInfo函数来获取计算机上所有网络连接的信息,包括连接名字、IP地址、子网掩码、默认网关和MAC地址。然后通过遍历返回的链表打印出这些信息。
解决 无用评论 打赏 举报