我正在 ARM Linux 设备上编写基于 Qt 的应用程序。我希望能够以最有效的方式创建 wifi 功能。目前,我正在使用 QProcess 运行一个脚本,该脚本修改 wpa_supplicant.conf 的网络块并启动 wlan0 接口以连接到接入点。 sh 脚本如下所示:
sed -i 's: ssid=.*: ssid="Name":' /etc/wpa_supplicant.conf
sed -i 's: psk=.*: psk="Password":' /etc/wpa_supplicant.conf
ifdown wlan0
ifup wlan0
为了扫描网络,我运行一个单独的 QProcess,它运行以下命令:
iw wlan0 scan | grep SSID
我是 Qt 和嵌入式开发的新手,所以我想问几个问题。除了使用 QProcess 之外,是否有更好的方法从 Qt 运行脚本,效率更高?使用太多 QProcess 的成本有多大?我还遇到过 wpa_cli,我想使用它,但我不知道如何通过 Qt 或任何 C++ 应用程序与它交互。如果有人能给我指导一种更好的处理扫描和连接 wifi 的方法(或者一般来说是从 Qt 在 linux 中运行命令的最佳方法),我将不胜感激。谢谢
答案1
QProcess 是迄今为止运行外部程序最直接的方法。我经常使用它并在linux中解析命令的输出。
是的,还有另一种方法可以使用 QNetwork 直接连接到网络,这也很简单,并不困难
请参阅此链接以使用 QT 和 QNetwork 扫描网络 https://stackoverflow.com/questions/45486924/qt-scanning-wi-fi-by-qnetworkaccessmanager和这个链接 https://github.com/abdularis/Wifi-Client-Scanner和这个 https://github.com/nlharri/WifiScannerLinux
如果您需要连接到 wpa 请求者,有一个很好的程序可以向您展示如何使用 qt 进行连接 https://github.com/loh-tar/wpa-cute
要了解有关 WPA 请求者的更多信息,请参阅此 https://wiki.archlinux.org/index.php/WPA_supplicant
最后请竖起大拇指