一,Qt程序和wpa_cli与wpa_supplicant关系综述:
1, Wpa_supplicant相当于服务器,,
2, 2,Qt程序和wpa_cli相当于客户端,向服务器发送请求和命令,同时接收服务器返回信息。
3, Qt程序和wpa_cli通过调用wpa_ctrl_request()通过soket向wpa_supplicant守护进程 发出命令,并接收返回信息。
4,wpa_supplicant接收命令,调用驱动发送,并返回信息。
二,使用:
因此只需打开wpa_supplicant后,QT程序即可,与其通信,加入网络。
wpa_supplicant启动命令:
WPA supplicant 在启动时,启动命令可以带有很多参数,目前我们的启动命令如下:
wpa_supplicant /system/bin/wpa_supplicant -Dwext -iath0 -c/etc/wpa_supplicant/wpa_supplicant.conf
wpa_supplicant对于启动命令带的参数,用了两个数据结构来保存,
一个是 wpa_params, 另一个是wpa_interface.
这主要是考虑到wpa_supplicant是可以同时支持多个网络接口的。
wpa_params数据结构主要记录与网络接口无关的一些参数设置。
而每一个网络接口就用一个wpa_interface数据结构来记录。
在启动命令行中,可以用-N来指定将要描述一个新的网络接口,对于一个新的网络接口,可以用下面六个参数描述:
-i<ifname> : 网络接口名称
-c<conf>: 配置文件名称
-C<ctrl_intf>: 控制接口名称
-D<driver>: 驱动类型
-p<driver_param>: 驱动参数
-b<br_ifname>: 桥接口名称
具体命令可参考wpa_cli连接例子:
./wpa_supplicant -B -i ath0 -c/etc/wpa_supplicant/wpa-psk-tkip.conf -d
./wpa_cli -i ath0
->set_network 0 ssid "TP-LINK_1F6FBA"
->set_network 0 key_mgmt WPA-PSK
->set_network 0 proto WPA
->set_network 0 pairwise TKIP
->set_network 0 group TKIP
->set_network 0 psk "0123456789"
->enable_network 0
dhclient ath0 //自动获取IP命令
wpa_cli全部命令如下:
commands:
status [verbose] = get current WPA/EAP