如何以编程方式在Qt中获取网络管理器设备名称?

时间:2018-04-20 21:45:25

标签: c++ qt network-programming

是否有可能在Windows中使用Qt / C ++获取网络适配器设备名称(网络适配器描述)?

enter image description here

我使用了QNetworkInterface,但它只返回适配器名称。我想知道哪个适配器是USB以太网。

QNetworkInterface interface;
QList<QNetworkInterface> IpList = interface.allInterfaces();
for (int i = 0; i < IpList.size(); i++)
    qDebug() << "Interface " << i << ":" << IpList.at(i).humanReadableName();

输出:

enter image description here

1 个答案:

答案 0 :(得分:2)

  

是否有可能获取网络适配器设备名称   (网络适配器描述)在Windows中使用Qt / C ++

答案是否定的。 Qt没有获取设备名称的任何功能(描述)。 QNetworkInterface只能获取接口名称和硬件地址(IP)。

在Windows上,您可以使用此小代码示例。 pAdapter->Description应该保留您正在寻找的价值。

#include <winsock2.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <QCoreApplication>
#pragma comment(lib, "IPHLPAPI.lib")

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    PIP_ADAPTER_INFO pAdapterInfo;
    pAdapterInfo = (IP_ADAPTER_INFO *) malloc(sizeof(IP_ADAPTER_INFO));
    ULONG buflen = sizeof(IP_ADAPTER_INFO);

    if(GetAdaptersInfo(pAdapterInfo, &buflen) == ERROR_BUFFER_OVERFLOW) {
      free(pAdapterInfo);
      pAdapterInfo = (IP_ADAPTER_INFO *) malloc(buflen);
    }

    if(GetAdaptersInfo(pAdapterInfo, &buflen) == NO_ERROR) {
        PIP_ADAPTER_INFO pAdapter = pAdapterInfo;
        while (pAdapter) {
            printf("\tAdapter Name: \t%s\n", pAdapter->AdapterName);
            printf("\tAdapter Desc: \t%s\n", pAdapter->Description);
            printf("\n\n");
            pAdapter = pAdapter->Next;
      }
    }
    return a.exec();
}

示例输出

    Adapter Name:   {DF6051AF-8F8F-4AA8-94A9-34656236F101}
    Adapter Desc:   VMware Virtual Ethernet Adapter for VMnet1


    Adapter Name:   {13C8DF49-6D60-4702-9B3A-688B2E372E42}
    Adapter Desc:   TAP-Windows Adapter V9


    Adapter Name:   {42635D10-33A3-4FE9-96BA-1071808B6E2B}
    Adapter Desc:   Realtek PCIe GBE Family Controller


    Adapter Name:   {AA62E2BA-D140-4C2C-A1B5-58082ED21E00}
    Adapter Desc:   1 x 1 11b/g/n Wireless LAN PCI Express Half Mini Card-Ad apter


    Adapter Name:   {7AE540D3-69FE-4BEE-A5CA-482CAF06DAB8}
    Adapter Desc:   VMware Virtual Ethernet Adapter for VMnet8