ESP32-TCP服务端(Arduino)
将ESP32设置为TCP服务器
介绍
TCP(Transmission Control Protocol)传输控制协议,是一种面向连接的(一个客户端对应一个服务端)、可靠的传输层协议。在TCP的工作原理中,它会将消息或文件分解为更小的片段,称为数据包,然后通过Internet发送。这些数据包被TCP层接收后,重新组合成完整的文件或消息。此外,为了确保数据的传递成功,TCP还会对数据流进行错误检查。如果发现错误,TCP会请求重新传输丢失或损坏的数据包。
基本方法
ESP32设置为TCP服务器的流程:
-
包含必要的库:
在Arduino项目中,首先需要包含与ESP32和网络通信相关的必要库:#include <Arduino.h> #include <WiFi.h> -
配置网络参数:
设置用于ESP32访问点(Access Point,AP)的网络参数,如SSID(Wi-Fi名称)和密码。const char *ssid = "esp32_tcp"; const char *password = "987654321"; -
创建TCP服务器对象:
使用WiFiServer类创建一个TCP服务器对象,并指定服务器监听的端口。WiFiServer server(1133);这里的
1133是服务器监听的端口号,你可以根据需要选择一个未被占用的端口。 -
设置服务器:
在setup()函数中进行服务器的初始化和启动。void setup() {Serial.begin(115200);WiFi.softAP(ssid, password);server.begin();Serial.print("IP:");// 串口打印AP_IPSerial.println(WiFi.softAPIP()); }这里,
WiFi.softAP(ssid, password)将ESP32配置为访问点,server.begin()启动TCP服务器,并使用Serial.println(WiFi.softAPIP())打印ESP32的IP地址。 -
处理客户端连接和通信:
在loop()函数中,通过server.available()检查是否有新的客户端连接。如果有新连接,通过WiFiClient对象处理通信。void loop() { // 循环检测有无客户端 有请求-能连接-有数据WiFiClient client = server.available();// client指向发出请求的客户端对象if (client) {// 处理新客户端连接while (client.connected()) {if (client.available()) {//检测有无数据可读// 处理客户端发送的数据char val = client.read();// 读取一个字节数据Serial.println(val);client.print(val); // 回发数据给客户端}}} else {client.stop();delay(2000);} }server.available();此函数用于检查是否有客户端试图连接到服务器。如果有客户端可用,它将返回一个WiFiClient对象,表示新的客户端连接。如果没有客户端试图连接,则返回一个WiFiClient对象,其值为false。
在循环检测新的客户端连接,如果有新连接,就在连接建立的状态下处理客户端发送的数据。
常用API
ESP32的Arduino核心库(Arduino core for ESP32)提供了一组用于TCP通信的API。以下是关于ESP32 Arduino库中与TCP相关的一些重要函数和类的总结:
-
WiFiServer 类:
- 构造函数:
WiFiServer(uint16_t port) - 成员函数:
begin(): 启动服务器,开始监听指定端口。available(): 检查是否有客户端请求连接,返回一个WiFiClient对象表示新的连接。status(): 返回服务器状态。stop(): 关闭服务器。
- 构造函数:
-
WiFiClient 类:
- 构造函数:
WiFiClient() - 成员函数:
connect(IPAddress ip, uint16_t port): 连接到指定IP地址和端口的服务器。connect(const char *host, uint16_t port): 连接到指定主机名和端口的服务器。connected(): 检查是否与服务器建立了连接。available(): 检查是否有数据可用于读取。read(): 读取一个字节的数据。readBytes(char *buffer, size_t length): 读取指定长度的数据。print()/println(): 向服务器发送数据。stop(): 关闭连接。
- 构造函数:
-
WiFi 操作相关:
WiFi.softAP(ssid, password): 将ESP32配置为Access Point(热点)。WiFi.softAPIP(): 获取ESP32 Access Point的IP地址。WiFi.localIP(): 获取ESP32的本地IP地址。
这些是ESP32 Arduino核心库中与TCP通信相关的一些重要函数和类。详细的文档可以查看ESP32 Arduino文档。
完整程序和测试效果
#include <Arduino.h>
#include <WiFi.h>
// ESP32作为tcp服务端,手机或者电脑的调试助手
// 作为客户端,进行通信const char *ssid = "esp32_tcp";
const char *password = "987654321";
// tcp服务端对象
WiFiServer server(1133);void setup()
{Serial.begin(115200);WiFi.softAP(ssid, password);server.begin();// 串口打印AP_IPSerial.print("IP:");Serial.println(WiFi.softAPIP());
}void loop()
{// 循环检测有无客户端 有请求-能连接-有数据WiFiClient client = server.available(); // client指向发出请求的客户端对象if (client){Serial.println("新客户端.");Serial.println(client.localIP());while (client.connected()){// 连接成功进入循环if (client.available())//检测有无数据可读{char val = client.read(); // 读取一个字节数据Serial.println(val);client.print(val); // 回发数据给客户端}}}else{client.stop();delay(2000);}
}
串口发送且得到返回

相关文章:
ESP32-TCP服务端(Arduino)
将ESP32设置为TCP服务器 介绍 TCP(Transmission Control Protocol)传输控制协议,是一种面向连接的(一个客户端对应一个服务端)、可靠的传输层协议。在TCP的工作原理中,它会将消息或文件分解为更小的片段&a…...
HCIA-HarmonyOS设备开发认证-序
序 最近涉及到HarmonyOS鸿蒙系统设备开发,在网络上已经有很多相关资料,视频教程,我也移植了公司的一个stm32G474板卡,运行LiteOS-m L0系统。 一面看资料一面移植,遇到不少坑,当看到运行的LOGO时࿰…...
Med-YOLO:3D + 医学影像 + 检测框架
Med-YOLO:3D 医学影像 检测框架 提出背景设计思路网络设计训练设计讨论分析 魔改代码:加强小目标检测总结 提出背景 论文链接:https://arxiv.org/abs/2312.07729 代码链接:https://github.com/JDSobek/MedYOLO 提出背景&…...
Docker部署Golang服务
不管是开发还是生产环境,通过 docker 方式部署服务都是一种不错的选择,能够解决不同开发环境一致性的问题。 本文以项目:https://github.com/johncxf/go-api 为例。 Dockerfile 构建 Go 运用环境 在项目根目录下添加 Dockerfile 文件&…...
C#,字符串匹配(模式搜索)Sunday算法的源代码
Sunday算法是Daniel M.Sunday于1990年提出的一种字符串模式匹配算法。 核心思想:在匹配过程中,模式串并不被要求一定要按从左向右进行比较还是从右向左进行比较,它在发现不匹配时,算法能跳过尽可能多的字符以进行下一步的匹配&…...
makefile 编译动态链接库使用(.so库文件)
makefile 编译动态链接库使用(.so库文件) 动态链接库:不会把代码编译到二进制文件中,而是在运行时才去加载, 好处是程序可以和库文件分离,可以分别发版,然后库文件可以被多处共享 动态链接库 动态&#…...
Hive 数仓及数仓设计方案
数仓(Data Warehouse) 数据仓库存在的意义在于对企业的所有数据进行汇总,为企业各个部门提供一个统一、规范的出口。做数仓就是做方案,是用数据治理企业的方案。 数据仓库的特点 面向主题集成 公司中不同的部门都会去数据仓库中拿数据,把独…...
Ubuntu使用docker-compose安装redis
ubuntu环境搭建专栏🔗点击跳转 Ubuntu系统环境搭建(十三)——使用docker-compose安装redis 文章目录 Ubuntu系统环境搭建(十三)——使用docker-compose安装redis1.搭建文件夹2.docker-compose.yaml配置文件3.redis.co…...
大数据安全 | 期末复习(上)| 补档
文章目录 📚概述⭐️🐇大数据的定义、来源、特点🐇大数据安全的含义🐇大数据安全威胁🐇保障大数据安全🐇采集、存储、挖掘环节的安全技术🐇大数据用于安全🐇隐私的定义、属性、分类、…...
Kylin 安装novnc 远程访问
noVNC可以使用浏览器直接访问服务器,而不需要使用VNC客户端。 1.初始环境 关闭防火墙或允许IP访问本机 2.安装依赖 dnf install -y tigervnc-server git 3.git下载novnc git clone https://github.com/novnc/noVNC.git git clone https://gitee.com/yangyizhao…...
神经网络算法与逻辑回归:优势与差异
神经网络算法和逻辑回归都是预测模型中的重要工具,但它们在处理复杂和非线性问题时表现出不同的性能。本文将深入探讨神经网络算法相对于逻辑回归的优势,以及它们在不同场景下的适用性。 一、引言 神经网络算法和逻辑回归都是预测模型中的重要工具&…...
【蓝桥杯冲冲冲】动态规划初步[USACO2006 OPEN] 县集市
蓝桥杯备赛 | 洛谷做题打卡day13 文章目录 蓝桥杯备赛 | 洛谷做题打卡day13题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示样例说明数据规模与约定 思路:方程: 题解代码我的一些话 [USACO2006 OPEN] 县集市 The County Fair 题目描述 每年…...
C#,入门教程(30)——扎好程序的笼子,错误处理 try catch
上一篇: C#,入门教程(29)——修饰词静态(static)的用法详解https://blog.csdn.net/beijinghorn/article/details/124683349 程序员语录:凡程序必有错,凡有错未必改! 程序出错的原因千千万&…...
操作教程|JumpServer堡垒机结合Ansible进行批量系统初始化
运维人员常常需要对资产进行系统初始化的操作,而初始化服务器又是一项繁琐的工作,需要花费运维人员大量的时间和精力。为了提高效率,许多组织会使用自动化工具和脚本来简化这些任务。自动化工具的运用可以大幅降低运维人员的工作量࿰…...
序列化VS反序列化
序列化、反序列化定义 如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中,或者在网络传输 Java 对象,这些场景都需要用到序列化。 序列化(Serialization)是指将对象转换为字节序列的过程,也可以称之为对象的持…...
新数智空间:阿里云边缘云持续保持中国公有云市场第一
全球领先的 IT 市场研究和咨询公司 IDC 发布 《中国边缘云市场解读(2023H1)》报告 中国边缘公有云服务市场 阿里云持续第一 稳居市场第一,“边缘”逆势生长 近日,全球领先的 IT 市场研究和咨询公司 IDC 最新发布《中国边缘云市…...
【开源】基于JAVA语言的陕西非物质文化遗产网站
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 设计目标2.2 研究内容2.3 研究方法与过程2.3.1 系统设计2.3.2 查阅文献2.3.3 网站分析2.3.4 网站设计2.3.5 网站实现2.3.6 系统测试与效果分析 三、系统展示四、核心代码4.1 查询民间文学4.2 查询传统音乐4.3 增改传统舞…...
C++(Qt)软件调试---静态分析工具clang-tidy(18)
C(Qt)软件调试—静态分析工具clang-tidy(18) 文章目录 C(Qt)软件调试---静态分析工具clang-tidy(18)1、概述2、clang-tidy基本用法3、目前已有检查项4、Qt Creator中安装clang-tidy5、Qt Creator中使用clang-tidy6、Clang-Tidy配置…...
2401llvm,clang的重构引擎
Clang的重构引擎 展示如何使用重构API中的各种原语来实现不同的重构. LibTooling库提供了几个在开发重构操作时,使用的其他API. 可用重构引擎来实现,用编辑器或IDE中的选择启动的本地重构.可结合AST匹配器和重构引擎,以实现不适合源选择和/或必须查询某些指定节点的AST的重构…...
【C语言深度剖析——第四节(关键字4)】《C语言深度解剖》+蛋哥分析+个人理解
追求本质,不断进步 本文由睡觉待开机原创,转载请注明出处。 本内容在csdn网站首发 欢迎各位点赞—评论—收藏 如果存在不足之处请评论留言,共同进步! 这里写目录标题 一、空间的申请1.变量定义1.1变量定义的概念:1.2变…...
用过才敢说 AI论文平台测评:2026年最值得尝试的几款工具
2026年真正好用的AI论文平台,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…...
《QGIS快速入门与应用基础》239:指北针样式选择(预设/自定义)
作者:翰墨之道,毕业于国际知名大学空间信息与计算机专业,获硕士学位,现任国内时空智能领域资深专家、CSDN知名技术博主。多年来深耕地理信息与时空智能核心技术研发,精通 QGIS、GrassGIS、OSG、OsgEarth、UE、Cesium、OpenLayers、Leaflet、MapBox 等主流工具与框架,兼具…...
NaViL-9B效果实测:支持中英文混排表格图像的行列结构识别与内容提取
NaViL-9B效果实测:支持中英文混排表格图像的行列结构识别与内容提取 1. 模型介绍 NaViL-9B是新一代原生多模态大语言模型,专为处理复杂视觉-语言任务设计。与常规视觉模型不同,它不仅能够理解图片内容,还能精准解析表格、文档等…...
带标注的交通工具分类数据集,17334张原始图片,识别率92.4%,可识别汽车,公共汽车,自行车,摩托车,支持yolo,coco json,pascal voc xml格式
带标注的交通工具分类数据集,17334张原始图片,识别率92.4%,可识别汽车,公共汽车,自行车,摩托车,支持yolo,coco json,pascal voc xml格式 模型训练指标参数: …...
Hugging Face Hub下载模型文件:hf_hub_download vs snapshot_download保姆级对比指南
Hugging Face Hub模型下载实战指南:hf_hub_download与snapshot_download深度解析 当你第一次在Python项目中集成Hugging Face模型时,是否曾被这两个看似相似的下载函数困扰过?作为Hugging Face生态中最常用的两个下载工具,hf_hub_…...
AHT20传感器数据漂移?STM32硬件I2C与软件模拟的稳定性对比测试
STM32硬件I2C与软件模拟I2C在AHT20传感器应用中的稳定性深度解析 工业级环境监测系统对温湿度数据的可靠性有着严苛要求。AHT20作为一款高精度温湿度传感器,其数据采集的稳定性直接关系到整个系统的可信度。本文将深入探讨STM32平台下硬件I2C与GPIO模拟I2C两种实现方…...
告别低效写作:盘点2026年标杆级的AI论文网站
一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文网站,覆盖选题构思、文献整理、内容生成、格式排版全流程,帮你高效搞定论文写作。 一、全流程王者:一站式搞定论文全链路(一天定稿首选ÿ…...
技术日报|字节DeerFlow今日强势登顶日增3787星总量破4.6万,3D建筑编辑器黑马杀入前二
🌟 TrendForge 每日精选 - 发现最具潜力的开源项目 📊 今日共收录 12 个热门项目🌐 智能中文翻译版 - 项目描述已自动翻译,便于理解🏆 今日最热项目 Top 10 🥇 bytedance/deer-flow 项目简介: DeerFlow是一…...
DeepSeek-OCR 2技术突破:动态视觉token重排效果展示
DeepSeek-OCR 2技术突破:动态视觉token重排效果展示 1. 引言 想象一下,当你阅读一份复杂的学术论文时,眼睛不会机械地从左上角扫到右下角,而是会自然地跳过标题、关注图表、追踪公式推导,甚至在不同的文本栏之间灵活…...
LuckyLilliaBot:NTQQ的终极OneBot协议插件完整指南
LuckyLilliaBot:NTQQ的终极OneBot协议插件完整指南 【免费下载链接】LuckyLilliaBot NTQQ的OneBot API插件 项目地址: https://gitcode.com/gh_mirrors/li/LuckyLilliaBot LuckyLilliaBot是一个基于TypeScript开发的NTQQ插件,为QQ客户端提供完整的…...
