C++ C语言 qt连接管理wifi界面 代码加wpa_supplicant工具连接,当然代码肯定会报错,我相信你们可以解决。不能解决联系我

其实wpa_supplicant工具不太好用,按顺序执行

1、wpa_supplicant -B -i wlan0 -c /data/cfg/wpa_supplicant.conf

2、wpa_cli -i wlan0 -p /var/run/wpa_supplicant scan

3、wpa_cli -i wlan0 -p /var/run/wpa_supplicant scan_results (搜索WiFi列表)

4、vi /data/cfg/wpa_supplicant.conf
输入:a  
输入:WiFi名称、密码
退出保存:Esc —— Shift:—— wq  —— 回车

配置文件最好是下面的格式否则可能不生效,如果你还有还有其他的配置项根据自己的wifi来配置

ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
update_config=1

network={
        ssid="WiFi名称"
        psk="WiFi密码"
        key_mgmt=WPA-PSK
}

5、reboot

6、wpa_supplicant -B -i wlan0 -c /data/cfg/wpa_supplicant.conf (连接)

7、ifconfig (查看wlan0网卡信息IP)
killall wpa_supplicant(结束程序)

头文件wifimanage.h

#ifndef FORMWIFIMANAGE_H
#define FORMWIFIMANAGE_H

#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QTableWidgetItem>

class CDialogBox;

namespace Ui {
class FormWifiManage;
}

//bssid / frequency / signal level / flags / ssid
//94:d9:b3:a8:4d:c0       2412    -39     [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS]    clefine

typedef struct wifi_info_s{
    QString bssid;
    int frequency;
    int signal_level;
    QString flags;
    QString ssid;
}wifi_info_t;

class FormWifiManage : public QWidget
{
    Q_OBJECT

public:
    explicit FormWifiManage(QWidget *parent = nullptr);
    ~FormWifiManage();

private:
    void setLabelText(const QString &);
    QString getPassword() const;

    void initTabWidget();
    void showWifiInfo();

private slots:
    void slotScanWifi();
    void slotConnectWifi(QTableWidgetItem*);
    void slotConnectToWifi();
    void wifiPassword(const QString&);

    void reconnectWifi();
    void slotTimeout();
    void disconnectWifi();

private:
    Ui::FormWifiManage *ui;

    QString m_name;
    QString m_password;
    CDialogBox *dialog;
    QTimer *timer;

    bool isscaning;
    bool selectIndex;
    QModelIndex curindex;
    QLabel *label;
    QString wpa_state;
    QString ssid;

    QLineEdit *password;
    QList<wifi_info_t> wifi_list;

    QTableWidgetItem* m_current_item;
};

#endif // FORMWIFIMANAGE_H

头文件wifimanage.cpp 

#include "formwifimanage.h"
#include "ui_formwifimanage.h"
#include <QDebug>
#include <QDialog>
#include <QLineEdit>
#include "CDialogBox.h"
#include "Logger.h"
#include <QFile>
#include <unistd.h>
#include <QTimer>
#include "CMessageBox.h"
#include <QStandardItem>

#define CMD_RESULT_BUF_SIZE 10240

QString characterConversion(const QString& ss)
{
    QString string1;
    QString string2;
    QString string3;
    bool ok;
    char ch[512] = { 0 };

    QString result = "";
    int icount = 0;
    for (int i = 0; i < ss.length(); )
    {
        if ((i + 4) <= ss.length()) {
            if (ss.at(i) == '\\' && ss.at(i + 1) == 'x') {
                QString tmpstring = QString(ss.at(i + 2)) + ss.at(i + 3);
                tmpstring = "0x" + tmpstring;
          
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值