当前位置:首页 > 实用技巧 >

网络扫描的整个扫描流程(最强大的网络扫描工具)

来源:原点资讯(www.yd166.com)时间:2023-12-06 06:51:17作者:YD166手机阅读>>

网络扫描的整个扫描流程,最强大的网络扫描工具(1)

一、ESP-C3的WIFI 的功能简介

ESP-C3 是一种小型,低功耗的 Wi-Fi 模块,具有集成的 TCP/IP 协议栈,可以方便地与其他电子设备进行连接。它的 Wi-Fi 功能是通过芯片内部的 ESP32 控制器来实现的。

ESP-C3 可以用作一个独立的 Wi-Fi 芯片,也可以嵌入到其他电子设备中,以实现远程控制和数据采集等功能。

ESP-C3支持两种操作模式:

  • 热点模式(AP)
  • 客户端模式(STA)

在 AP 模式下,ESP-C3 可以当作一个无线路由器,允许其他设备连接到它;
而在 STA 模式下,ESP-C3 可以连接到其他的 Wi-Fi 热点。

整体流程示意图:

网络扫描的整个扫描流程,最强大的网络扫描工具(2)

二、ESP-C3 扫描WiFi操作的流程1. 初始化 NVS 模块nvs_flash_init

首先,通过调用 nvs_flash_init 函数初始化 NVS 模块。

2. 初始化网络接口模块esp_netif_init

通过调用 esp_netif_init() 函数初始化网络接口模块。
该函数主要负责初始化网络接口模块的基本框架和配置。在初始化完成后,程序就可以通过网络接口模块实现对网络连接的控制和管理。

3. 创建事件循环esp_event_loop_create_default

通过调用 esp_event_loop_create_default() 函数创建事件循环,该循环将处理所有的网络事件。
该函数是ESP-IDF提供的一个创建默认事件循环的函数。事件循环是ESP-IDF中的一种基本机制,用于处理系统中各种事件,如 WiFi连接事件、TCP连接事件等。

该函数创建一个默认的事件循环后,就会将其注册到ESP-IDF系统中,在创建完成后,程序就可以通过该事件循环进行事件的处理。

4. 配置 WiFi 模块esp_wifi_init

通过调用 esp_wifi_init() 函数配置 WiFi 模块,该函数的参数是一个 wifi_init_config_t 结构体,可以使用默认配置,也可以自定义配置。

esp_wifi_init() 函数是 ESP-IDF 中 WIFI 模块初始化的入口。它需要一个指向 wifi_init_config_t 结构体的指针作为参数。

wifi_init_config_t 结构体是 WIFI 模块初始化的配置结构体,它的作用是配置 WIFI 模块的一些初始化参数,如信道、功率、主动探测时间等。它包含以下成员:

  • sta_conn_policy:指定当启动 WIFI 模块时的连接策略;
  • sta_scan_method:指定扫描的方法;
  • sta_sort_policy:指定扫描到的热点列表的排序策略;
  • sta_scan_threshold:指定每次扫描的间隔时间。

如果不需要配置,也可以调用预定义好的常量 WIFI_INIT_CONFIG_DEFAULT() 进行初始化。

5. 设置 WiFi 模式esp_wifi_set_mode

通过调用 esp_wifi_set_mode 函数设置 WiFi 模式,该模式应设置为 WIFI_MODE_STA,表示该 ESP-C3 芯片为 Station 模式。

6. 启动 WiFi 模块esp_wifi_start

通过调用 esp_wifi_start 函数启动 WiFi 模块。
esp_wifi_start 函数是 ESP-IDF WiFi 库中的一个 API 函数,用于启动 WiFi 的工作。

在使用 WiFi 功能之前,需要先通过调用 esp_wifi_init 函数进行 WiFi 的初始化操作,然后再通过调用 esp_wifi_start 函数启动 WiFi。在调用该函数之后,设备就可以连接到 WiFi 网络并开始接收和发送数据了。

该函数的返回值为 esp_err_t 类型,当返回值为 ESP_OK 时,表示 WiFi 启动成功,否则表示 WiFi启动失败。

7. 开始扫描esp_wifi_scan_start

通过调用 esp_wifi_scan_start 函数开始扫描可用的 WiFi 热点。
esp_wifi_scan_start是ESP-IDF中WiFi模块的一个API函数,用于开始一次WiFi扫描操作。该函数需要两个参数:

wifi_scan_config_t *config:WiFi扫描的配置参数,可以为空指针,表示使用默认配置。
bool blocking:扫描操作是否阻塞。如果为true,表示扫描操作阻塞当前线程,直到扫描结束。如果为false,表示扫描操作是异步的,函数立即返回,扫描结果需要通过回调函数获得。
返回值:

如果调用成功,返回ESP_OK;否则返回一个错误码,表示调用失败的原因。

8. 等待扫描结束

延迟一段时间,以等待扫描结束。

9. 获取扫描结果

通过调用自定义函数 wifi_scan 函数获取扫描到的 WiFi 热点列表。

三、完整demo

#include "freertos/FreeRTOS.h" #include "esp_wifi.h" #include "esp_log.h" #include "nvs_flash.h" #define TAG "wifi_scan" // 定义 wifi_scan 函数,扫描并打印 Wi-Fi 列表 void wifi_scan() { // 存储可用 Wi-Fi 热点数量 uint16_t ap_num; // 存储 Wi-Fi 热点信息的指针 wifi_ap_record_t *ap_records; // 获取可用 Wi-Fi 热点数量 esp_wifi_scan_get_ap_num(&ap_num); if (ap_num == 0) { // 如果没有可用 Wi-Fi 热点,输出提示信息 ESP_LOGI(TAG, "No AP found"); return; } // 分配内存空间存储 Wi-Fi 热点信息 ap_records = (wifi_ap_record_t *)malloc(sizeof(wifi_ap_record_t) * ap_num); if (!ap_records) { ESP_LOGE(TAG, "malloc error"); return; } // 获取所有可用 Wi-Fi 热点信息 ESP_ERROR_CHECK(esp_wifi_scan_get_ap_records(&ap_num, ap_records)); // 输出可用 Wi-Fi 热点数量 ESP_LOGI(TAG, "Found %d APs", ap_num); // 遍历所有可用 Wi-Fi 热点,并输出信息 for (int i = 0; i < ap_num; i ) { ESP_LOGI(TAG, "SSID:%s\t RSSI:%d\t BSSID:" MACSTR, ap_records[i].ssid, ap_records[i].rssi, MAC2STR(ap_records[i].bssid)); } // 释放内存 free(ap_records); } void app_main() { // 初始化 NVS(Non-Volatile Storage,非易失性存储)模块 // 该函数用于在 flash 中初始化 NVS 存储区域,每个应用仅需调用一次该函数 ESP_ERROR_CHECK(nvs_flash_init()); // 初始化网络接口模块 ESP_ERROR_CHECK(esp_netif_init()); // 创建默认事件循环,该循环将处理所有的网络事件 ESP_ERROR_CHECK(esp_event_loop_create_default()); // 配置 WiFi 模块 wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); ESP_ERROR_CHECK(esp_wifi_init(&cfg)); // 设置 WiFi 模式为 STA(Station 模式) ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); // 启动WiFi ESP_ERROR_CHECK(esp_wifi_start()); // 开始扫描可用的WIFI热点 ESP_ERROR_CHECK(esp_wifi_scan_start(NULL, true)); // 延迟2秒,等待扫描结束 vTaskDelay(2000 / portTICK_PERIOD_MS); // 获取扫描结果 wifi_scan(); // 保持程序运行 while(1){ vTaskDelay(1); } }

运行效果:

网络扫描的整个扫描流程,最强大的网络扫描工具(3)

网络扫描的整个扫描流程,最强大的网络扫描工具(4)

栏目热文

蓝字笔顺笔画顺序表(蓝的笔顺顺序图)

蓝字笔顺笔画顺序表(蓝的笔顺顺序图)

一、文字演变二、姓氏读音拼音:lán 注音:ㄌㄢˊ 繁体字:藍汉字结构:上下结构造字法:艹简体部首:艹蓝的部首笔画:3总...

2023-12-06 06:30:29查看全文 >>

蓝字的笔顺视频(蓝字笔顺视频)

蓝字的笔顺视频(蓝字笔顺视频)

蓝 读音 lán部首 艹 笔画数 13 五笔 AJTL参考:藍 褴蓝(藍-lán-名词)(形声。从艸,监声。本义:蓼蓝)...

2023-12-06 06:27:31查看全文 >>

蓝正确笔画笔顺(蓝的笔顺正确写法怎么写)

蓝正确笔画笔顺(蓝的笔顺正确写法怎么写)

千文八四五 蓝蓝 lán:异体,上下结构,上收下放。上部“卝”头要紧凑,不要写高。笔顺为左竖、左横,右横,最后写右竖。两...

2023-12-06 07:00:51查看全文 >>

网络机顶盒认证失效(网络机顶盒无法认证是什么原因)

网络机顶盒认证失效(网络机顶盒无法认证是什么原因)

免费领取试听课程材料,私信回复”学习“即可领取”很多小伙伴来信了解hcip证书的时效,今天小编就详细讲解下hcip证书的...

2023-12-06 06:57:45查看全文 >>

机顶盒屏蔽开发者模式(机顶盒接入平台认证超时怎么解决)

机顶盒屏蔽开发者模式(机顶盒接入平台认证超时怎么解决)

85版本基本可以说是荣耀盒子Pro用户的噩梦了,本来挺好用的电视盒子,一到了85版本,语音助手变得不好用了,界面也出现了...

2023-12-06 06:56:21查看全文 >>

简述全连接扫描的基本过程(全连接扫描的优点)

简述全连接扫描的基本过程(全连接扫描的优点)

概述Wi-Fi是无线局域网的一个标准,它依赖无线电来传输信号,但无线电本身是开放的,不能像有线网络那样谁都可以任意的连接...

2023-12-06 06:53:37查看全文 >>

简述半连接扫描的基本过程(结束半连接扫描的基本过程)

简述半连接扫描的基本过程(结束半连接扫描的基本过程)

网络攻击常见危害行为:(1)信息泄露攻击;(2)完整性破坏攻击;(3)拒绝服务攻击;(4)非法使用攻击。网络攻击模型:1...

2023-12-06 07:02:47查看全文 >>

简述扫描的两种方法(扫描命令详细讲解)

简述扫描的两种方法(扫描命令详细讲解)

有什么扫描神器?在当今数字化时代,扫描神器已经成为了人们日常生活中必不可少的工具。扫描神器可以用于多种场景,例如商务办公...

2023-12-06 07:02:21查看全文 >>

网络扫描的主要技术(常用网络扫描的方法有哪些)

网络扫描的主要技术(常用网络扫描的方法有哪些)

在网络安全领域,端口扫描是一种重要的技术手段,用于探测目标主机开放的网络端口,从而了解目标主机的网络配置和安全状况。本文...

2023-12-06 06:30:05查看全文 >>

循环扫描方式主要分为五个阶段(循环扫描算法优缺点)

循环扫描方式主要分为五个阶段(循环扫描算法优缺点)

工作中经常和PLC打交道,不知道大家有没有过这样的疑问: PLC的扫描执行过程究竟会经历什么阶段?扫描的工作流程是怎么样...

2023-12-06 06:44:28查看全文 >>

文档排行