TCP(Transmission Control Protocol)传输控制协议,是一种面向连接的(一个客户端对应一个服务端)、可靠的传输层协议。在TCP的工作原理中,它会将消息或文件分解为更小的片段,称为数据包,然后通过Internet发送。这些数据包被TCP层接收后,重新组合成完整的文件或消息。此外,为了确保数据的传递成功,TCP还会对数据流进行错误检查。如果发现错误,TCP会请求重新传输丢失或损坏的数据包。
ESP32设置为TCP服务器的流程:
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通信相关的一些重要函数和类。详细的文档可以查看。
#include <Arduino.h>
#include <WiFi.h>
// ESP32作为tcp服务端,手机或者电脑的调试助手
// 作为客户端,进行通信
const char *ssid = "esp32_tcp";
const char *password = "9876321";
// tcp服务端对象
WiFiServer server(1133);
void setup()
{
Serial.begin(115200);
WiFi.softAP(ssid, password);
server.begin();
// 串口打印AP_IP
Serial.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);
}
}
串口发送且得到返回
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务