天天看点

wpa_supplicant在连接或者断开时候监听到的事件1. 使用的前提2. 事件的监听3. 相关事件的示例4. 操作行为与相关接收到的事件

1. 使用的前提

使用

wpa_supplicant

管理

WIFI

连接,系统是Linux操作系统。

下文中,所有的连接成功都指的是物理连接层的连接成功,而不是协议层的连接成功。

下文中的

bssid

都不是实际监听到的,只是为了随意修改了的值。

2. 事件的监听

在设置和连接网络的过程中,创建

socket

监听

wpa_supplicant

的状态信息日志。

这里主要监听了如下的两种事件:

  1. CTRL-EVENT-DISCONNECTED
  2. CTRL-EVENT-CONNECTED

在连接WIFI的过程中,如果连接WIFI不成功,往往会收到

CTRL-EVENT-DISCONNECTED

事件;连接成功的时候会收到

CTRL-EVENT-CONNECTED

事件。

3. 相关事件的示例

在接收到的事件中,包含的不是对应的

ssid

,而是

bssid

连接成功的示例:

<3>CTRL-EVENT-CONNECTED - Connection to 00:00:00:00:00:01 completed [id=1 id_str=]
           

连接不成功,或者断开连接的示例:

<3>CTRL-EVENT-DISCONNECTED bssid=00:00:00:00:00:01 reason=3 locally_generated=1
           

4. 操作行为与相关接收到的事件

4.1 理想接收到的消息

考虑的情况:断开其他网络连接当前网络

这样首先会接收到断开网络的

CTRL-EVENT-DISCONNECTED

事件,如果当前网络连接成功的话,会接收到当前网络的

CTRL-EVENT-CONNECTED

事件。

在上面接收到的

CTRL-EVENT-CONNECTED

中包含

reason

,这类操作中,观察到接收的都是3。

4.2 先接收到断开时间立马收到连接成功事件

在要连接的网络上,先收到

CTRL-EVENT-DISCONNECTED

事件,在不到一秒后(某次,当时日志记录间隔为12ms),立即收到

CTRL-EVENT-CONNECTED

事件。并且这两个事件中对应的

bssid

是同一个。

上述的情况,并不是总能观察到。有时候只能收到连接到的

bssid

CTRL-EVENT-CONNECTED

事件。

观察到,

CTRL-EVENT-CONNECTED

中包含

reason

也都是3。

4.3 多次收到连接成功的事件

在已经连接到某个网络之后,仍旧能够多次收到

CTRL-EVENT-CONNECTED

事件,在观察到的现象中,连接的同属于相同的

ssid

bssid

不同;在我设置的网络中,它们的频率是不同的。