lclliang123456789 2014-09-02 07:17 采纳率: 0%
浏览 2416

利用C++编程实现检测一台计算机上多张网卡与其他外接设备的网络连接状态

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地址。然后通过遍历返回的链表打印出这些信息。

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)