基于 Arduino 库实现 ESP32 TCP Server 应用例程

实现步骤:

  • ESP32 开启 WiFi Station 模式连接路由器
  • 连上路由器后将获取到分配的 IP 地址
  • 基于分配的 IP 地址创建 TCP Server

测试代码如下:

#include <WiFi.h>
#include <WiFiClient.h>
 
const char* ssid = "cc2.4";
const char* password = "espressif";
 
WiFiServer server(1234);
 
void setup() {
  Serial.begin(115200);
  delay(1000);
  
  // 连接到WiFi网络
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  
  // 启动TCP服务器
  server.begin();
  
  Serial.println("WiFi connected");
  Serial.println("IP address: " + WiFi.localIP().toString());
}
 
void loop() {
  // 等待客户端连接
  WiFiClient client = server.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 连接同一路由器

  • 查看 UART0 日志打印,获取 TCP Server 的 IP 地址
    在这里插入图片描述

  • 使用手机端 TCP 调试 APP 与 ESP32 创建的 TCP Server 建立连接
    在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对您的问题,可以通过以下步骤实现ARDUINO ESP32自动重连WIFI和TCPSERVER: 1. 首先,需要在代码中定义WIFI和TCPSERVER的参数,包括SSID、密码、服务器IP和端口号。 例如: ``` const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; const char* serverIP = "your_SERVER_IP"; int serverPort = your_SERVER_PORT; ``` 2. 接下来,在setup()函数中,需要连接WIFI并建立TCP连接: 例如: ``` WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("WiFi connected"); WiFiClient client; while (!client.connect(serverIP, serverPort)) { delay(1000); Serial.println("Connecting to server..."); } Serial.println("Server connected"); ``` 3. 为了实现自动重连,需要在loop()函数中添加重连逻辑。首先,需要检查WIFI连接状态和TCP连接状态: 例如: ``` if (WiFi.status() != WL_CONNECTED) { Serial.println("WiFi disconnected"); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Reconnecting to WiFi..."); } Serial.println("WiFi reconnected"); } if (!client.connected()) { Serial.println("Server disconnected"); while (!client.connect(serverIP, serverPort)) { delay(1000); Serial.println("Reconnecting to server..."); } Serial.println("Server reconnected"); } ``` 4. 最后,为了避免频繁重连造成的资源浪费,可以添加一定的时间间隔限制,例如每10秒钟检查一次连接状态: 例如: ``` unsigned long lastCheckTime = 0; unsigned long checkInterval = 10000; void loop() { if (millis() - lastCheckTime > checkInterval) { lastCheckTime = millis(); // Check connection status and reconnect if necessary // ... } // Other code // ... } ``` 通过以上步骤,即可实现ARDUINO ESP32自动重连WIFI和TCPSERVER的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值