2

首先我的目标系统是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

是该程序的旧版本的屏幕截图,几乎可以正常工作:

任何帮助表示赞赏。

编辑:我在我的另一台设备上测试了该程序,它运行良好。但是我的主设备仍然坏了,可能恢复出厂设置可以解决它。但我仍然想知道问题的原因。

4

1 回答 1

1

问题是接口名称错误。

于 2018-03-20T10:58:05.720 回答