ESP32 UDP通信

一、介绍UDP通信

UDP:无需建立连接就可以发数据。

HTTP:需要双方建立连接才能发数据。

详细介绍链接:

https://blog.csdn.net/qq_39300332/article/details/79139229

二、测试UDP通信

先举个例子,什么是UDP通信呢?

我们习惯使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。

我们在使用esp32开发板测试一下UDP通信。

1、下载网络调试助手NetAssist。图标长这样(哈哈哈,感觉长得好奇怪):

 首先我们点开它看一下,记住IP地址和端口号,一会要用它。注意:之后ESP32连接的网络和电脑使用的网络在同一WiFi下。

 2、直接上代码测试下。

#include <WiFi.h>
#include <WiFiUdp.h> //引用以使用UDP

const char *ssid = "***";
const char *password = "***";

WiFiUDP Udp;                      //创建UDP对象
unsigned int localUdpPort = 8080; //本地端口号

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

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (!WiFi.isConnected())
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Connected");
  Serial.print("IP Address:");
  Serial.println(WiFi.localIP());

  Udp.begin(localUdpPort); //启用UDP监听以接收数据
}

void loop()
{
  int packetSize = Udp.parsePacket(); //获取当前队首数据包长度
  if (packetSize)                     //如果有数据可用
  {
    char buf[packetSize];
    Udp.read(buf, packetSize); //读取当前包数据
    Serial.print("message: ");
    Serial.println(buf);
    Serial.print("From IP: ");
    Serial.println(Udp.remoteIP());
    Serial.print("From Port: ");
    Serial.println(Udp.remotePort());

  }
}

以上代码的例子是esp32作为UDP接收数据的。

我们打开网络调试助手和串口助手。

首先在串口助手上看下esp32的IP地址。

然后打开网络调试助手,如下,框出的区域为目标主机,也就是esp32的IP和端口:

 端口号我们在程序里设置的是8080.

 然后随便发送数据,测试一下。看一下esp这边的串口接收。

 以上,esp32可以收到数据,但是后面又多了乱码,通信是不可靠的。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哆啦哆小魔仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值