基于 Arduino 库实现 ESP32 使能 WiFi AP + TCP Server 的应用

news2024/11/20 6:23:09

实现步骤:

  • ESP32 开启 WiFi AP 模式创建 WiFi 热点
  • 定义 IP 地址
  • 创建 TCP Server

测试代码如下:

#include <WiFi.h>
#include <WiFiClient.h>
 
const char* ssid = "cc123";
const char* password = "espressif";
 
WiFiServer ServerPort(1234);


IPAddress LocalIP(192,168,4,22);
IPAddress Gateway(192,168,4,22);
IPAddress SubNet(255,255,255,0);
 
void setup() {
  Serial.begin(115200);
  delay(1000);
  
  WiFi.mode(WIFI_AP); // 设置为AP模式

  
  WiFi.softAPConfig(LocalIP,Gateway,SubNet);
  WiFi.softAP(ssid, password); // 创建WiFi接入点
  IPAddress ip = WiFi.softAPIP(); // 获取AP的IP地址

  Serial.println();
  Serial.print("AP IP address: ");
  Serial.println(ip);
  
  // 启动TCP服务器
  ServerPort.begin();
  
}
 
void loop() {
  // 等待客户端连接
  WiFiClient client = ServerPort.available();
  if (client) {
    Serial.println("New client connected");
    
    while (client.connected()) {
      // 检查是否有数据可供读取
      if (client.available()) {
        // 读取客户端发送的数据
        String data = client.readStringUntil('\n');
        Serial.print("Received data: ");
        Serial.println(data);
        
        // 发送响应到客户端
        String response = "Server received: " + data;
        client.println(response);
      }
    }
    
    // 断开与客户端的连接
    client.stop();
    Serial.println("Client disconnected");
  }
}

测试方式:

  • 使用手机连接 ESP32 创建的 AP 热点
  • 查看 UART0 日志打印,获取 TCP Server 的 IP 地址
    在这里插入图片描述
  • 使用手机端 TCP 调试 APP(网络助手) 与 ESP32 创建的 TCP Server 建立连接
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726213.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python-年会抽奖

#!/usr/bin/python # coding:utf-8 # Author:Rauckimport randomclass WhoIsLuck:"""年会抽奖"""# 奖品gift [{name: 一等奖, limit: 3, desc: 泰国5日游手术费报销},{name: 二等奖, limit: 6, desc: iPhone14手机},{name: 三等奖, limit: 30, …

【Linux OS】华为openEuler操作系统与openGauss数据库安装及使用入门

华为openEuler操作系统与openGauss数据库安装及使用入门 1、软件下载1.1、openEuler1.2、openGauss1.3、Data Studio 2、系统安装2.1、创建虚拟机2.2、安装操作系统2.3、登录系统 3、数据库安装及设置3.1、数据库安装3.2、数据库管理3.3、数据库设置 4、数据库访问4.1、Navicat…

Redis:IO多路复用深度解析

目录 一、Multiplexing&#xff08;IO多路复用&#xff09;1.是什么2.能干嘛3.Reactor设计模式4.select, poll, epoll 都是I/O多路复用的具体的实现4.1 select方法4.2 poll方法4.3 epoll方法4.4 三个方法对比 5.5种 I/O 模型总结6.为什么3个都保有 一、Multiplexing&#xff08…

关于如何使用 python 下载 json 格式数据

本章节内容节自《python编程从入门到实践》第十六章&#xff0c;我们将从网络上下载数据&#xff0c;并对数据进行可视化。就可以对其进行分析甚至观察其规律和关联。 学习目标 我们将访问并可视化以下两种常见格式存储的数据&#xff1a; CSV 使用 Python 模块 CSV 来处理以 C…

SpringBoot整合EasyExcel 3.x

文章目录 1 EasyExcel 3.x1.1 简介1.2 引入依赖1.3 简单导出1.3.1 定义实体类1.3.2 自定义转换器1.3.3 定义接口 1.4 简单导入1.5 复杂导出1.5.1 引言1.5.2 自定义注解1.5.3 定义实体类1.5.4 数据映射与平铺1.5.5 自定义单元格合并策略1.5.6 定义接口 1 EasyExcel 3.x 1.1 简介…

string容器语法

文章目录 string容器string基本概念本质&#xff1a;string和char * 区别&#xff1a;特点&#xff1a; string构造函数示例 string赋值操作示例&#xff1a; string字符串拼接示例&#xff1a; string查找和替换示例&#xff1a; string字符串比较示例&#xff1a; string字符…

第六章 rabbitmq高可用集群

在服务之间会采用mq进行消息通信,而rabbitmq本身也如同consul一样,如果只有一个节点那么就可能出现宕机的问题,并且基于mq的特点我们是可以在多个服务之间使用同一个mq来相互通信,因此高可用的架构设计就必不可少 1、rabbitmq集群方案 主备 远程 镜像 多活 构建 2、…

[uni-app]设置运行到微信小程序

1、设置微信小程序开发工具路径 2、检查微信小程序开发工具是否开启了服务端口 服务端口要是没有开启&#xff0c;会报 initialize。 3、在uni-app开发工具中点击运行微信开发者工具&#xff0c;微信开发工具运行成功。

Spark架构体系

StandAlone模式是spark自带的集群运行模式&#xff0c;不依赖其他的资源调度框架&#xff0c;部署起来简单。 StandAlone模式又分为client模式和cluster模式&#xff0c;本质区别是Driver运行在哪里&#xff0c;如果Driver运行在SparkSubmit进程中就是Client模式&#xff0c;如…

谷歌Med-PaLM 2霸榜医学问答领域

谷歌IO大会上&#xff0c;谷歌CEO桑达尔・皮查伊&#xff08;Sundar Pichai&#xff09;向全世界AI开发者发布了谷歌最新的大型语言模型&#xff08;LLMs&#xff09;PaLM 2&#xff0c;作为对标OpenAI最新大模型GPT-4的竞品&#xff0c;PaLM 2展现出了强大的多语言和推理能力。…

概率论与数理统计发展历史简介

概率论与数理统计发展历史简介 1 介绍1.1 概述1.2 概率论发展历史1.3 统计学发展历史1.4 概率论演化 2 在线学习在线 概率与统计 视觉化学习 -- 布朗大学何志坚老师的数理统计讲义鸢尾花书--统计至简 参考 1 介绍 1.1 概述 概率论是与概率有关的数学分支。虽然有几种不同的概…

Linux内核模块开发 第 8 章

The Linux Kernel Module Programming Guide Peter Jay Salzman, Michael Burian, Ori Pomerantz, Bob Mottram, Jim Huang译 断水客&#xff08;WaterCutter&#xff09;源 LKMPG 8 sysfs: 与模块交互 sysfs 允许用户通过读写模块中的变量实现与内核模块的交互。这个特性在…

leetcode907. 子数组的最小值之和(单调栈-java)

子数组的最小值之和 leetcode907. 子数组的最小值之和题目描述单调栈解法一代码演示单调栈解法二 单调栈专题 leetcode907. 子数组的最小值之和 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/sum-of-subarray-minimums…

如何快速学习一门计算机语言

如何快速学习一门计算机语言 掌握一门语言的基本数据类型和基本语法。掌握语言里数组和集合工具类的使用掌握循环分支控制掌握一下该计算机语言面向对象或者函数式编程的特征对异常或者错误的处理文件读写&#xff0c;输入输出流字符串的处理日志的打印运行时module或者librar…

【C语言基础】函数

C语言中的函数是模块化编程的基础&#xff0c;通过函数的定义、实参与形参的传递以及函数的调用流程&#xff0c;我们可以实现代码的重用和逻辑的封装。本文将深入探讨C语言函数的定义方式、实参与形参的传递机制&#xff0c;以及函数的调用流程和局部变量与栈内存的关系。 一、…

企业快递管理制定教程

在经济飞速发展的助力之下&#xff0c;现代企业接触到的制度越来越多&#xff0c;除了我们熟知的CRM、OA等等&#xff0c;管理制度进一步细分。企业寄件在企业内部运转中的地位越发重要&#xff0c;随之也产生了快递管理制度。不少人就会问&#xff1a;有必要这么细分吗&#x…

跨应用连接同一个redis,从redis取缓存,对象属性值都为null

本地idea部署和docker部署问题&#xff0c;连接同一个redis&#xff0c;idea项目的redis缓存&#xff0c;docker中取不到&#xff0c;docker中缓存的redis本地取不到 ✅ 原因&#xff1a;idea本地代码实体类未进行代码混淆&#xff0c;docker代码实体类进行了混淆&#xff0c;…

Caused by: java.io.IOException: CreateProcess error=206, 文件名或扩展名太长

java.io.IOException: Cannot run program "D:\javaAPP\jdk\bin\java.exe" (in directory "D:\java\demo"): CreateProcess error206, 文件名或扩展名太长。 Caused by: java.io.IOException: CreateProcess error206, 文件名或扩展名太长。 删除项目.ide…

Vue -- 生命周期 数据共享

1 组件的生命周期 1.1 生命周期 & 生命周期函数 生命周期&#xff08;Life Cycle&#xff09;是指一个组件从创建 -> 运行 -> 销毁的整个阶段&#xff0c;强调的是一个时间段。 生命周期函数&#xff1a;是由 vue 框架提供的内置函数&#xff0c;会伴随着组件的生命…

leetcode极速复习版-第一章数组

目录 数组 数组理论基础 704二分查找 27移除元素 977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II 数组部分总结 数组 数组理论基础 数组的元素是不能删的&#xff0c;只能覆盖。 二维数组&#xff1a; 704二分查找 二分法 middle int(left right)的int 直接对着一个…