首先我的目标系统是android。
我创建了一个 c++ 应用程序,通过作为 wpa_ctrl.c 文件提供的控制接口与 wpa_supplicant 进行通信(我包含了头文件 wpa_ctrl.h 并与库 libwpa_client.so 链接)
这里是文档页面。
一切正常,但突然间我发送的每个命令都由未知命令回复,我想正常工作的命令(ping、list_networks、状态和终止)有一个共同点(也许他们不需要打开 wpa_supplicant .conf 导致其他命令出现问题)
这是我打开连接的方式:
this->ctrl = wpa_ctrl_open(this->socket.c_str());
这是我发送命令的方式:
s = wpa_ctrl_request(this->ctrl, cmd.c_str(), cmd.length(), this->_reply, &reply_len, msg_cb);
以上方法签名:
struct wpa_ctrl * wpa_ctrl_open(const char *ctrl_path);
int wpa_ctrl_request(struct wpa_ctrl *ctrl, const char *cmd, size_t cmd_len,
char *reply, size_t *reply_len,
void (*msg_cb)(char *msg, size_t len));
示例输出:
PING
PONG
UNKNOWN COMMAND: MIB
UNKNOWN COMMAND: STATUS-VERBOSE
UNKNOWN COMMAND: PMKSA
UNKNOWN COMMAND: LOGON
UNKNOWN COMMAND: LOGOFF
UNKNOWN COMMAND: REASSOCIATE
UNKNOWN COMMAND: RECONNECT
UNKNOWN COMMAND: RECONFIGURE
LIST_NETWORKS
network id / ssid / bssid / flags
UNKNOWN COMMAND: DISCONNECT
UNKNOWN COMMAND: SCAN
UNKNOWN COMMAND: SCAN_RESULTS
UNKNOWN COMMAND: BSS
UNKNOWN COMMAND: ADD_NETWORK
STATUS
p2p_device_address=12:d3:8a:c8:34:ef
p2p_state=IDLE
wifi_display=1
ifname=p2p0
address=12:d3:8a:c8:34:ef
ifname=wlan0
address=10:d3:8a:c8:34:ef
UNKNOWN COMMAND: ADD_NETWORK
closed connection with wpa_supplicant.
Can not create Network
这是该程序的旧版本的屏幕截图,几乎可以正常工作:
任何帮助表示赞赏。
编辑:我在我的另一台设备上测试了该程序,它运行良好。但是我的主设备仍然坏了,可能恢复出厂设置可以解决它。但我仍然想知道问题的原因。