本站改版新增arduino频道

Micropython
Arduino

arduino TCP UDP通讯例程


arduino 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);
}


    
原文链接:https://blog.csdn.net/weixin_42880082/article/details/136127132



推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 ESP56.com All Rights Reserved
晋ICP备14006235号-22 晋公网安备14108102001165号

执行时间: 0.0095729827880859 seconds