Qt获取wifi列表,连接wifi后获取IP地址

环境win7+qt5.13+MinGW32,台式机

直接上步骤了,网上看到的略显啰嗦,就是这么简单直接:

1、头文件 #include "windows.h",#include "wlanapi.h"

2、.pro设置连接路径(需要根据自己安装路径加载

LIBS += C:/Qt/Qt5.13.0/Tools/mingw730_32/i686-w64-mingw32\lib\libwlanapi.a

3、显示在combox控件内

ui->cbx_WifiName->clear();
    HANDLE  hClientHandle;
    DWORD dwError = ERROR_SUCCESS;//原来我DWORD MFC的数据类型,相当于unsigned long
    DWORD dwNegotiatedVersion;

    dwError = WlanOpenHandle(1, nullptr, &dwNegotiatedVersion, &hClientHandle);

    //连接不成功
    if (dwError != ERROR_SUCCESS)
    {
        qDebug()<<"未打开成功!";
        WlanCloseHandle(hClientHandle,nullptr);
        return;
    }
    PWLAN_INTERFACE_INFO_LIST  pInterfaceList;
    dwError = WlanEnumInterfaces(hClientHandle, nullptr,&pInterfaceList);
    //返回值还是DWRD类型的,成功的话是ERROR_SUCCESS
    if ( dwError != ERROR_SUCCESS )
    {
        ErroInf="未发现wifi相关列表!";
        WlanFreeMemory(pInterfaceList);//释放列表
        //释放内存,从Native Wifi函数返回的任何内存必须释放
        WlanCloseHandle(hClientHandle,nullptr);//关闭wlan
        return;
    }
    GUID &guid = pInterfaceList->InterfaceInfo[0].InterfaceGuid;
    PWLAN_AVAILABLE_NETWORK_LIST pWLAN_AVAILABLE_NETWORK_LIST = nullptr;

    WlanGetAvailableNetworkList(hClientHandle, &guid,2,nullptr, &pWLAN_AVAILABLE_NETWORK_LIST);
    
    if(pWLAN_AVAILABLE_NETWORK_LIST==nullptr)   //防止程序崩溃
        return;
    //添加到combox
    for (int i=0;i<pWLAN_AVAILABLE_NETWORK_LIST->dwNumberOfItems;i++)
    {
        ui->cbx_WifiName->addItem((char*)(pWLAN_AVAILABLE_NETWORK_LIST->Network[i].dot11Ssid.ucSSID));
    }

4、上图

读取IP地址

ui->cbx_Ip->clear();
    QString localHostName = QHostInfo::localHostName();
    qDebug() <<"localHostName:"<<localHostName;
    QHostInfo info = QHostInfo::fromName(localHostName);
    foreach(QHostAddress address,info.addresses())
    {
        if(address.protocol() == QAbstractSocket::IPv4Protocol)
            ui->cbx_Ip->addItem(address.toString());
    }

链接:Qt获取WIFI名称列表的实现方法-C++文档类资源-CSDN下载 

  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
你可以使用Qt的QNetworkConfigurationManager类来获取WiFi信号强度。下面是一个简单的代码示例: ```cpp #include <QCoreApplication> #include <QNetworkConfigurationManager> #include <QNetworkSession> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 获取网络配置管理器 QNetworkConfigurationManager manager; // 获取当前活动的网络配置 QNetworkConfiguration config = manager.defaultConfiguration(); // 创建网络会话 QNetworkSession session(config); // 获取网络接口 QNetworkInterface wifiInterface = QNetworkInterface::interfaceFromName(session.interface()); // 获取接口地址列表 QList<QNetworkAddressEntry> addressEntries = wifiInterface.addressEntries(); // 遍历地址列表 foreach (QNetworkAddressEntry entry, addressEntries) { // 获取IPv4地址 if (entry.ip().protocol() == QAbstractSocket::IPv4Protocol) { // 获取本地主机的IP地址 QString ipAddress = entry.ip().toString(); // 获取WiFi接口的MAC地址 QString macAddress = wifiInterface.hardwareAddress(); // 获取WiFi信号强度 int signalStrength = wifiInterface.attribute(QNetworkInterface::WifiSignalStrength); qDebug() << "IP Address:" << ipAddress; qDebug() << "MAC Address:" << macAddress; qDebug() << "Signal Strength:" << signalStrength << "dBm"; } } return a.exec(); } ``` 需要注意的是,QNetworkInterface::WifiSignalStrength属性返回的是一个整数值,表示以dBm为单位的信号强度。值越大,信号越强。通常,信号强度在-50dBm到-80dBm之间被认为是良好的信号强度。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫听穿林打叶声儿

感觉有用的,一毛两毛不嫌少

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值