#创作者激励# #跟着小白一起学鸿蒙# WPA_Supplicant连接方式简析 原创 精华
【本文正在参加2023年第一期优质创作者激励计划】
WPA_Supplicant连接方式简析
-
WPA_Supplicant支持的连接方式
在以上的结构体定义里我们可以看到一共定义了4个宏定义标明4中wpa_supplicant
-
CONFIG_CTRL_IFACE_UDP
使用ipv4 socket接口与client进行连接和通讯,默认使用localhost(127.0.0.1)
-
CONFIG_CTRL_IFACE_UDP_IPV6
使用ipv6 socket接口与client进行连接和通讯,默认使用localhost(::1)
-
CONFIG_CTRL_IFACE_UNIX
使用unix socket接口与client进行连接和通讯,是Linux和*BSD的默认配置,默认在linux系统使用/var/run/wpa_supplicant,在android系统使用/data/misc/wifi/sockets
-
CONFIG_CTRL_IFACE_NAMED_PIPE
使用Windows Named Pipe模式与client进行连接和通讯,是windows的默认配置
TCP/IP Socket 和 Unix Socket最大的区别就是unix-socket没有port,使用文件handle作为传输对象,但是只能在同物理主机内运行,相对ip-socket速度也更快,有人验证过unix-socket要比ip-socket快31%
-
-
WPA_Supplicant的控制接口
-
关wifi时:
-
开wifi时:
《简析OpenHarmony的WiFi能力》大概介绍过OpenHarmony里的WiFi架构,对应上面的命令行可以看出,wifi在后台启动了3个服务
- wifi_manager_service:wifi服务层,为wifi框架层服务,对下通过wpa_hal与wpa_hal_service通信;
- wifi_host:wlan启动的设备服务,对应vendor/hihope/rk3568/hdf_config/uhdf/device_info.hcs,
- wifi_hal_service:wifi 硬件抽象服务,对应加载wpa_supplicant,与hdf进行交互,对上提供wpa_client.so
-
-
客户端
-
wpa_supplicant提供两种客户端:
-
wpa_cli:用于和wpa_supplicant交互;使用wpa_cli可以实现wifi的具体功能
对应的主要功能:
-
wpa_ctrl_open() : 连接WPAS的控制接口, 可以是WPAS的全局控制接口,也可以是为每一个无线网络接口指定的控制接口
-
wpa_ctrl_close() : 关闭wpa_ctrl_open()打开的连接
-
wpa_ctrl_request() : 通过建立的连接向WPAS发送消息
-
wpa_ctrl_attach() : 使用wpa_ctrl_open()建立的连接, WPAS默认不会向这些连接的client端发送event, 必须显示调用wpa_ctrl_attach(),才能接收到消息
-
wpa_ctrl_detach() : 取消wpa_ctrl_attach()
-
wpa_ctrl_recv() : 接收WPAS端发来的event, 必须要先在打开的连接上调用wpa_ctrl_attach()才能接收到event, 当无event可读时, 此调用会被block住
-
wpa_ctrl_pending() : 检查是否有pending的event, 若有则可以调用wpa_ctrl_recv()来接收
-
wpa_ctrl_get_fd() : 获取同WPAS的连接中, client端的fd, 获取的fd可以用于select, epoll等, 但是不能直接用于收发消息, 必须使用wpa_ctrl_request()和wpa_ctrl_recv()
-
wpa_ctrl_cleanup() : 当使用unix socekt 进行连接时,会建立socket文件, 若其carsh, 则会遗留这些文件, wpa_ctrl_cleanup()用于清理这些文件
-
-
hostapd_cli:用于和hostapd交互;(当设置wlan为ap模式时候可以使用此功能)
-
-
-
服务端
-
wpa_supplicant提供两种服务端:
- wpa_supplicant:Wi-Fi接入相关功能,对应wifi_hal_sta_interface.c启动或停止,此文件在wifi的services层,对应之前的wifi_hal_service;这也解释了为啥开wifi后会多出一个wifi_hal_service
- hostapd:Wi-Fi热点相关功能,对应wifi_hal_ap_interface.c启动或停止,此文件在wifi的services层,对应之前的wifi_hal_service;
-
对应配置文件:
此处多了个p2p的配置,其实就是wpa_supplicat启动时候使用的不同配置,也就是说wpa_supplicant可以作为接入点模式启动也可以作为p2p模式启动。
-
-
小结
以上就是对OpenHarmony里的wap_supplicant的大概分析,具体代码分析可以自己搜索wap_supplicant的相关文章。
功能说明的很清楚,先收藏一波
关注下应用层下的东西
功能基本都介绍了,学习了