15_Arduino-ESP32_TCP,UDP

143 阅读1分钟

1_TCP

1.1_TCP服务端

#include <WiFi.h>

const char *ssid = "FAST_BA74";
const char *password = "xxxxxx";
const uint16_t port = 8000;

WiFiServer server(port); 

void setup() {
  Serial.begin(115200);
  Serial.println();

  WiFi.mode(WIFI_STA);
  WiFi.setSleep(false);  //关闭STA模式下wifi休眠,提高响应速度
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Connected");
  Serial.print("IP Address:");
  Serial.println(WiFi.localIP());

  server.begin();
}

void loop() {
  WiFiClient client = server.available();  //尝试建立客户对象
  if (client)                              //如果当前客户可用
  {
    Serial.println("[Client connected]");
    while (client.connected())  //如果客户端处于连接状态
    {
      if (client.available())  //如果有可读数据
      {
        char c = client.read();  
        Serial.write(c);
        client.print(c);
      }
    }
    client.stop();  //结束当前连接:
    Serial.println("[Client disconnected]");
  }
}

1.2_TCP客户端

#include <WiFi.h>

const char *ssid = "FAST_BA74";
const char *password = "xxxxxx";
const char * host = "192.168.0.106"; 
const uint16_t port = 8000;

WiFiClient client; 

void setup()
{
    Serial.begin(115200);

    WiFi.mode(WIFI_STA);
    WiFi.setSleep(false); //关闭STA模式下wifi休眠,提高响应速度
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED)
    {
        delay(500);
        Serial.print(".");
    }
    Serial.println("Connected");
    Serial.print("IP Address:");
    Serial.println(WiFi.localIP());
}

void loop()
{
    Serial.println("尝试访问服务器");
    if (client.connect(host, port))
    {
        Serial.println("访问成功");

        client.print("Hello world!");                    //向服务器发送数据
        while (client.connected() || client.available()) //如果已连接或有收到的未读取的数据
        {
            if (client.available()) //如果有数据可读取
            {
                String line = client.readStringUntil('\n'); //读取数据到换行符
                Serial.print("读取到数据:");
                Serial.println(line);
                client.write(line.c_str()); //将收到的数据回发
            }
        }
        Serial.println("关闭当前连接");
        client.stop(); //关闭客户端
    }
    else
    {
        Serial.println("访问失败");
        client.stop(); //关闭客户端
    }
    delay(5000);
}