当ESP32 在AP模式下,有客户端连接到AP时,如何第一时间获取对应客户端的ip地址和mac地址(注意:ESP IDF版本 V5.3.1)

问题背景:

        在学习ESP32 AP热点部分时,发现其实很多网上说的获取客户端ip的方法都基本上没有用,原因是我使用的IDF版本是V5.3.1,很多获取客户端ip的接口都已经被弃用了:

在不降级IDF版本情况下,寻找解决办法:     

        在 ESP32 AP 模式 下,Wi-Fi 和 IP 事件的运作流程通过 ESP32 的 Wi-Fi 驱动事件系统 管理。每当发生连接、分配 IP 地址或断开连接时,ESP32 都会通过事件机制通知用户,允许用户在事件处理函数中进行相应的操作,如打印日志、更新状态或进行其他应用逻辑。通过这些事件,用户可以非常方便地管理连接到 ESP32 AP 的客户端,并处理网络相关事件。为解决上面这个问题,我们同样要使用ESP32的事件处理系统来解决这个问题。

事件流程简述

  1. 客户端连接:当一个客户端(设备)连接到 ESP32 的 AP 时,Wi-Fi 驱动会触发 WIFI_EVENT_AP_STACONNECTED 事件,事件中会包含连接客户端的 MAC 地址。

  2. IP 地址分配:一旦客户端连接成功并请求 IP 地址,ESP32 的 DHCP 服务器 会分配一个 IP 地址给客户端。在分配成功后,会触发 IP_EVENT_AP_STAIPASSIGNED 事件,事件中包含分配的 IP 地址。

  3. 客户端断开:当客户端断开时,会触发 WIFI_EVENT_AP_STADISCONNECTED 事件,事件中包含断开连接的客户端的 MAC 地址及断开原因。

在 AP 模式 下,Wi-Fi 相关事件主要包括:

WIFI_EVENT_AP_STACONNECTED

                                                                当有客户端成功连接到 ESP32 AP 时触发。

                                                                事件数据包括连接设备的 MAC 地址 和 连接时间。

WIFI_EVENT_AP_STADISCONNECTED

                                                                      事件数据包括断开设备的 MAC 地址 和 断开原因。

                                                                      当客户端断开连接时触发。

        当客户端连接到 ESP32 的 AP 后,通常通过 DHCP 协议来获取 IP 地址。ESP32 AP 模式下的 DHCP 事件也会触发相应的事件,帮助我们获取客户端的 IP 地址。

在 AP 模式 下,IP 相关事件主要包括:

IP_EVENT_STA_GOT_IP:

                                             当 STA(客户端) 获取到 IP 地址时触发。

                                             事件数据包含 IP 地址、子网掩码 和 网关。

IP_EVENT_AP_STAIPASSIGNED:

                                                        当 AP 模式下,ESP32 向客户端分配了 IP 地址时触发。

                                                        事件数据包含客户端的 IP 地址 和 MAC 地址。

          这些事件通常是通过 esp_event_handler_instance_register() 注册的回调函数进行处理。

示例:Wi-Fi 事件处理(参考于乐鑫的官方WIFI AP 示例代码基础上改进的)<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值