Arduino ESP8266/ESP32 TCP/UDP通讯例程

Arduino ESP8266/ESP32 TCP/UDP通讯例程


  • 🔧需要配合上位机软件:网络调试助手http://www.cmsoft.cn/software.html

📝ESP8266/ESP32 作为TCP客户端使用

//要将ESP8266/32 Arduino TCPClient的调试输出发送到串口,可以使用Serial.println函数将调试信息打印到串口。测试条件:需要同网络环境下才能建立连接

#ifdef ESP32
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif
#include <WiFiClient.h>

const char* ssid = "########";//填写wifi,名称
const char* password = "********";//填写wifi,密码 
const char* serverIP = "192.168.0.113";//需要连接的目标,TCP服务器端地址。根据网段修改
const int serverPort = 7777;//服务端端口号

WiFiClient client;

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

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");
  Serial.println("Connected");
    Serial.print("IP Address:");
    Serial.println(WiFi.localIP());//打印本机IP地址

  Serial.print("Connecting to server ");
  Serial.print(serverIP);
  Serial.print(":");
  Serial.println(serverPort);

  if (client.connect(serverIP, serverPort)) {
    Serial.println("Connected to server");
  } else {
    Serial.println("Connection failed");
  }
}

void loop() {
  if (client.connected()) {
    if (client.available()) 
    {
      String response = client.readStringUntil('\n');
      Serial.print("Server response: ");
      Serial.println(response);
    }
  } else {
    Serial.println("Connection lost");
    client.connect(serverIP, serverPort);
  }
}

     

📝ESP8266/ESP32 作为TCP服务端使用

/*
 * 在ESP8266/32上使用Arduino编程语言开发TCP服务端,可以使用Serial.println()函数来发送调试信息到串口。在接收和发送调试信息的过程中,可以使用以下代码作为参考:
 * 首先连接到Wi-Fi网络,然后创建一个TCP服务器并开始监听连接。在主循环中,通过server.available()检查是否有客户端连接,如果有则进入内部循环。在内部循环中,通过client.available()检查是否有数据可读取,如果有,则读取并打印接收到的请求信息,并通过client.println()发送响应。当客户端断开连接时,通过client.stop()停止连接,并打印相应的调试信息。
可以通过串口监视器查看ESP8266/32发送和接收的调试信息。在Arduino IDE中,选择对应的串口和波特率,然后点击串口监视器按钮即可查看。
 * 
 */


#ifdef ESP32
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif
#include <WiFiClient.h>

const char* ssid = "########";//填写wifi,名称
const char* password = "********";//填写wifi,密码 

WiFiServer server(7777);//服务端端口号

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

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }

  Serial.println("Connected to WiFi");
  Serial.println("Connected");
    Serial.print("IP Address:");
    Serial.println(WiFi.localIP());//打印本机IP地址
    
  server.begin();
  Serial.println("Server started");
}

void loop() {
  WiFiClient client = server.available();

  if (client) {
    Serial.println("New client connected");

    while (client.connected()) {
      if (client.available()) {
        String request = client.readStringUntil('\r');
        Serial.print("Received request: ");
        Serial.println(request);

        client.println("Hello from ESP Device");
        Serial.println("Response sent");
      }
    }

    client.stop();
    Serial.println("Client disconnected");
  }
}

      


在这里插入图片描述

📘ESP8266/32 UDP通讯

/*
  要在ESP8266/32上使用Arduino库进行UDP接收和发送调试信息,可以按照以下步骤进行操作:
  your_SSID和your_PASSWORD分别替换为你的WiFi网络的名称和密码。
  serverIP 和localPort分别替换为你要发送UDP数据的目标IP地址和端口号。
  通过串口查看接收和发送的调试信息。
*/
#ifdef ESP32
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif

#include <WiFiUdp.h>

WiFiUDP udp;
unsigned int localPort = 7777; // 本地端口号
const char* serverIP = "192.168.0.113";//需要连接的目标,TCP服务器端地址。根据网段修改
char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; // 接收数据缓冲区

const char* ssid = "########";//填写wifi,名称
const char* password = "********";//填写wifi,密码 

void setup() {

   Serial.begin(115200);
   
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");
  Serial.println(WiFi.localIP());

  udp.begin(localPort);
}


void loop() {
  // 接收UDP数据
  int packetSize = udp.parsePacket();
  if (packetSize) {
    int len = udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE);
    if (len > 0) {
      packetBuffer[len] = 0; // 添加字符串结束符
      Serial.print("Received packet: ");
      Serial.println(packetBuffer);
    }
  }

  // 发送UDP数据
  udp.beginPacket(serverIP, localPort);
  udp.write("Hello from ESP Device");
  udp.endPacket();

  delay(1000);
}





在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值