本站改版新增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.0093390941619873 seconds