本站改版新增arduino频道
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