请教:QT如何获取和修改本机网卡的DNS配置信息?

masuz1 2016-09-14 10:42:24
我可以通过 QNetworkInterface 读取网卡和IP信息,但却找不到DNS信息。该如何读取和修改DNS呢?
...全文
1781 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ninicaoyuan 2017-10-25
  • 打赏
  • 举报
回复
GetAdaptersInfo()如何实现的
Little柯南 2016-10-28
  • 打赏
  • 举报
回复
如果上面的不是很完善,你可以找下使用wndows的API来索取你的所需,这是一种思路!使用的话,你必然可以解决此问题
Little柯南 2016-10-28
  • 打赏
  • 举报
回复
引用 1 楼 masuz1 的回复:
QT版块人气这么低啊?都没人回复。。。
你使用的是windows的话,使用Win API来完善,我给你贴代码。另外,Qt板块也不算人气低,是你的这个问题,Qt本身类库基本上没这个:
    //PIP_ADAPTER_INFO结构体存储本机网卡信息,包括本地网卡、无线网卡和虚拟网卡
    PIP_ADAPTER_INFO pAdapterInfo=(IP_ADAPTER_INFO *) malloc(sizeof(IP_ADAPTER_INFO));
    ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO);
    //调用GetAdaptersInfo函数,填充pAdapterInfo指针变量,其中ulOutBufLen参数既是输入也是输出
    if(GetAdaptersInfo( pAdapterInfo, &ulOutBufLen) != ERROR_SUCCESS)
    {
        //如果分配失败,释放后重新分配
        GlobalFree (pAdapterInfo);
        pAdapterInfo = (IP_ADAPTER_INFO *) malloc (ulOutBufLen);
    }
    if(GetAdaptersInfo( pAdapterInfo, &ulOutBufLen) == NO_ERROR)
    {
        while (pAdapterInfo)
        {
            //pAdapter->Description中包含"PCI"为本地网卡,pAdapter->Type是71为无线网卡
            if(strstr(pAdapterInfo->Description,"PCI") > 0|| pAdapterInfo->Type != 71)
            {
                //这里假设每个网卡只有一个IP
                char * ipAddress=pAdapterInfo->IpAddressList.IpAddress.String;
                char tempIpAddress[3]={'\0'};
                memcpy(tempIpAddress,ipAddress,3);
                //只显示IP以192开头的网卡信息
                if(strstr(tempIpAddress,"192"))
                {
//                    qDebug("------------------------------------------------------------\n");
//                    qDebug("Adapter Name: \t%s\n", pAdapterInfo->AdapterName);
//                    qDebug("Adapter Description: \t%s\n", pAdapterInfo->Description);
//                    qDebug("Adapter Address: \t");
//                    for (UINT i = 0; i < pAdapterInfo->AddressLength; i++)
//                    {
//                        qDebug("%02X%c", pAdapterInfo->Address[i],
//                        i == pAdapterInfo->AddressLength - 1 ? '\n' : '-');
//                    }
//                    qDebug("Adapter Type: \t%d\n", pAdapterInfo->Type);
                    char* str = (char*)pAdapterInfo->IpAddressList.IpAddress.String;
                    myIP = QString(QLatin1String(str));

//                    qDebug("IP Address: \t%s\n", str);
//                    qDebug("IP Mask: \t%s\n", pAdapterInfo->IpAddressList.IpMask.String);
                }
            }
            pAdapterInfo = pAdapterInfo->Next;

        }
    }
    else
    {
        qDebug("Call to GetAdaptersInfo failed.\n");
    }
    if(pAdapterInfo)
    {
        GlobalFree (pAdapterInfo);
    }
我是传奇zhg 2016-10-27
  • 打赏
  • 举报
回复
同求,正在研究,请问楼主有眉目了吗?
masuz1 2016-09-18
  • 打赏
  • 举报
回复
QT版块人气这么低啊?都没人回复。。。

16,173

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧