两个ESP32上的AsyncUDP示例不工作:";WL“无SSID可用”;

两个ESP32上的AsyncUDP示例不工作:";WL“无SSID可用”;,udp,arduino-ide,arduino-esp8266,esp32,Udp,Arduino Ide,Arduino Esp8266,Esp32,我正在尝试在两台计算机之间创建一个直接的客户端-服务器WiFi网络,由我的两台计算机的USB端口供电 我已经使用Arduino IDE(带有附加的boards manager URL)加载了这个示例,WiFi状态(在两个板上)为WL_NO_SSID_AVAIL 客户端代码: #include "WiFi.h" #include "AsyncUDP.h" const char * ssid = "my_ssid"; const char * password = "my_password";

我正在尝试在两台计算机之间创建一个直接的客户端-服务器WiFi网络,由我的两台计算机的USB端口供电

我已经使用Arduino IDE(带有附加的boards manager URL)加载了这个示例,WiFi状态(在两个板上)为WL_NO_SSID_AVAIL

客户端代码:

#include "WiFi.h"
#include "AsyncUDP.h"

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

AsyncUDP udp;

void setup()
{
    Serial.begin(115200);
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);
    if (WiFi.waitForConnectResult() != WL_CONNECTED) {
        Serial.println("WiFi Failed");
        while(1) {
            delay(1000);
        }
    }
    if(udp.connect(IPAddress(192,168,1,100), 1234)) {
        Serial.println("UDP connected");
        udp.onPacket([](AsyncUDPPacket packet) {
            Serial.print("UDP Packet Type: ");
            Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast");
            Serial.print(", From: ");
            Serial.print(packet.remoteIP());
            Serial.print(":");
            Serial.print(packet.remotePort());
            Serial.print(", To: ");
            Serial.print(packet.localIP());
            Serial.print(":");
            Serial.print(packet.localPort());
            Serial.print(", Length: ");
            Serial.print(packet.length());
            Serial.print(", Data: ");
            Serial.write(packet.data(), packet.length());
            Serial.println();
            //reply to the client
            packet.printf("Got %u bytes of data", packet.length());
        });
        //Send unicast
        udp.print("Hello Server!");
    }
}

void loop()
{
    delay(1000);
    //Send broadcast on port 1234
    udp.broadcastTo("Anyone here?", 1234);
}
#include "WiFi.h"
#include "AsyncUDP.h"

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

AsyncUDP udp;

void setup()
{
    Serial.begin(115200);
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);
    if (WiFi.waitForConnectResult() != WL_CONNECTED) {
        Serial.println("WiFi Failed");
        while(1) {
            delay(1000);
        }
    }
    if(udp.listen(1234)) {
        Serial.print("UDP Listening on IP: ");
        Serial.println(WiFi.localIP());
        udp.onPacket([](AsyncUDPPacket packet) {
            Serial.print("UDP Packet Type: ");
            Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast");
            Serial.print(", From: ");
            Serial.print(packet.remoteIP());
            Serial.print(":");
            Serial.print(packet.remotePort());
            Serial.print(", To: ");
            Serial.print(packet.localIP());
            Serial.print(":");
            Serial.print(packet.localPort());
            Serial.print(", Length: ");
            Serial.print(packet.length());
            Serial.print(", Data: ");
            Serial.write(packet.data(), packet.length());
            Serial.println();
            //reply to the client
            packet.printf("Got %u bytes of data", packet.length());
        });
    }
}

void loop()
{
    delay(1000);
    //Send broadcast
    udp.broadcast("Anyone here?");
}
#include "WiFi.h"
#include "AsyncUDP.h"

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

AsyncUDP udp;

int port = 1234;

void setup() {
    Serial.begin(115200);
    WiFi.mode(WIFI_STA); // Make this the client (the server is WIFI_AP)
    WiFi.begin(ssid, password);
    delay(100);

    Serial.print("Connecting...");
    // Display a period every 0.5 s to show the user something is happening.
    while (WiFi.waitForConnectResult() != WL_CONNECTED) { 
      Serial.print(".");    
      delay(500);
    }
    Serial.println("");

    if(udp.listen(port)) {
        udp.onPacket([](AsyncUDPPacket packet) {
          Serial.print("Received data: ");
            Serial.write(packet.data(), packet.length());
            Serial.println();
        });
    }
}

void loop(){
    delay(1000);
    udp.broadcastTo("A message for the server from the client.", port);
}
#include "WiFi.h"
#include "AsyncUDP.h"

const char *my_ssid = "my_ssid";
const char *password = "my_password";

int port = 1234;

AsyncUDP udp;

void setup(){
    Serial.begin(115200);
    WiFi.mode(WIFI_AP);
    WiFi.softAP(my_ssid, password);
    delay(100);

      if(udp.listen(port)) {
        udp.onPacket([](AsyncUDPPacket packet) {
            Serial.print("Data: ");
            Serial.write(packet.data(), packet.length());
            Serial.println();  
          });
      }
}

void loop() {
    delay(1000);
    udp.broadcastTo("Anyone here? Love from the server.", port);
}
服务器代码:

#include "WiFi.h"
#include "AsyncUDP.h"

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

AsyncUDP udp;

void setup()
{
    Serial.begin(115200);
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);
    if (WiFi.waitForConnectResult() != WL_CONNECTED) {
        Serial.println("WiFi Failed");
        while(1) {
            delay(1000);
        }
    }
    if(udp.connect(IPAddress(192,168,1,100), 1234)) {
        Serial.println("UDP connected");
        udp.onPacket([](AsyncUDPPacket packet) {
            Serial.print("UDP Packet Type: ");
            Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast");
            Serial.print(", From: ");
            Serial.print(packet.remoteIP());
            Serial.print(":");
            Serial.print(packet.remotePort());
            Serial.print(", To: ");
            Serial.print(packet.localIP());
            Serial.print(":");
            Serial.print(packet.localPort());
            Serial.print(", Length: ");
            Serial.print(packet.length());
            Serial.print(", Data: ");
            Serial.write(packet.data(), packet.length());
            Serial.println();
            //reply to the client
            packet.printf("Got %u bytes of data", packet.length());
        });
        //Send unicast
        udp.print("Hello Server!");
    }
}

void loop()
{
    delay(1000);
    //Send broadcast on port 1234
    udp.broadcastTo("Anyone here?", 1234);
}
#include "WiFi.h"
#include "AsyncUDP.h"

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

AsyncUDP udp;

void setup()
{
    Serial.begin(115200);
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);
    if (WiFi.waitForConnectResult() != WL_CONNECTED) {
        Serial.println("WiFi Failed");
        while(1) {
            delay(1000);
        }
    }
    if(udp.listen(1234)) {
        Serial.print("UDP Listening on IP: ");
        Serial.println(WiFi.localIP());
        udp.onPacket([](AsyncUDPPacket packet) {
            Serial.print("UDP Packet Type: ");
            Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast");
            Serial.print(", From: ");
            Serial.print(packet.remoteIP());
            Serial.print(":");
            Serial.print(packet.remotePort());
            Serial.print(", To: ");
            Serial.print(packet.localIP());
            Serial.print(":");
            Serial.print(packet.localPort());
            Serial.print(", Length: ");
            Serial.print(packet.length());
            Serial.print(", Data: ");
            Serial.write(packet.data(), packet.length());
            Serial.println();
            //reply to the client
            packet.printf("Got %u bytes of data", packet.length());
        });
    }
}

void loop()
{
    delay(1000);
    //Send broadcast
    udp.broadcast("Anyone here?");
}
#include "WiFi.h"
#include "AsyncUDP.h"

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

AsyncUDP udp;

int port = 1234;

void setup() {
    Serial.begin(115200);
    WiFi.mode(WIFI_STA); // Make this the client (the server is WIFI_AP)
    WiFi.begin(ssid, password);
    delay(100);

    Serial.print("Connecting...");
    // Display a period every 0.5 s to show the user something is happening.
    while (WiFi.waitForConnectResult() != WL_CONNECTED) { 
      Serial.print(".");    
      delay(500);
    }
    Serial.println("");

    if(udp.listen(port)) {
        udp.onPacket([](AsyncUDPPacket packet) {
          Serial.print("Received data: ");
            Serial.write(packet.data(), packet.length());
            Serial.println();
        });
    }
}

void loop(){
    delay(1000);
    udp.broadcastTo("A message for the server from the client.", port);
}
#include "WiFi.h"
#include "AsyncUDP.h"

const char *my_ssid = "my_ssid";
const char *password = "my_password";

int port = 1234;

AsyncUDP udp;

void setup(){
    Serial.begin(115200);
    WiFi.mode(WIFI_AP);
    WiFi.softAP(my_ssid, password);
    delay(100);

      if(udp.listen(port)) {
        udp.onPacket([](AsyncUDPPacket packet) {
            Serial.print("Data: ");
            Serial.write(packet.data(), packet.length());
            Serial.println();  
          });
      }
}

void loop() {
    delay(1000);
    udp.broadcastTo("Anyone here? Love from the server.", port);
}

是否有其他人在使用Arduino IDE在其ESP32上运行示例代码时遇到问题?

总之,我的误解是:

  • AsyncUDP示例不允许直接的客户机-服务器通信。它需要一个中间路由器,例如家庭路由器。这是因为WiFi.mode(WiFi_STA)设置-需要将服务器设置为WiFi.mode(WiFi_AP),以便连接其他ESP32
  • 客户端和服务器都需要使用udp.listen(端口)函数来接收消息(您可以在其中指定端口)。要发送消息,请对服务器使用udp.broadcast(消息),对客户端使用udp.broadcastTo(消息,端口)
  • 下面的代码是我能做的最小的示例,仍然有效。我确信有更好的例子可用,但这是我让示例在两个ESP32之间进行通信的方式,无需HTTP请求,使用中间路由器等

    客户端:

    #include "WiFi.h"
    #include "AsyncUDP.h"
    
    const char * ssid = "my_ssid";
    const char * password = "my_password";
    
    AsyncUDP udp;
    
    void setup()
    {
        Serial.begin(115200);
        WiFi.mode(WIFI_STA);
        WiFi.begin(ssid, password);
        if (WiFi.waitForConnectResult() != WL_CONNECTED) {
            Serial.println("WiFi Failed");
            while(1) {
                delay(1000);
            }
        }
        if(udp.connect(IPAddress(192,168,1,100), 1234)) {
            Serial.println("UDP connected");
            udp.onPacket([](AsyncUDPPacket packet) {
                Serial.print("UDP Packet Type: ");
                Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast");
                Serial.print(", From: ");
                Serial.print(packet.remoteIP());
                Serial.print(":");
                Serial.print(packet.remotePort());
                Serial.print(", To: ");
                Serial.print(packet.localIP());
                Serial.print(":");
                Serial.print(packet.localPort());
                Serial.print(", Length: ");
                Serial.print(packet.length());
                Serial.print(", Data: ");
                Serial.write(packet.data(), packet.length());
                Serial.println();
                //reply to the client
                packet.printf("Got %u bytes of data", packet.length());
            });
            //Send unicast
            udp.print("Hello Server!");
        }
    }
    
    void loop()
    {
        delay(1000);
        //Send broadcast on port 1234
        udp.broadcastTo("Anyone here?", 1234);
    }
    
    #include "WiFi.h"
    #include "AsyncUDP.h"
    
    const char * ssid = "my_ssid";
    const char * password = "my_password";
    
    AsyncUDP udp;
    
    void setup()
    {
        Serial.begin(115200);
        WiFi.mode(WIFI_STA);
        WiFi.begin(ssid, password);
        if (WiFi.waitForConnectResult() != WL_CONNECTED) {
            Serial.println("WiFi Failed");
            while(1) {
                delay(1000);
            }
        }
        if(udp.listen(1234)) {
            Serial.print("UDP Listening on IP: ");
            Serial.println(WiFi.localIP());
            udp.onPacket([](AsyncUDPPacket packet) {
                Serial.print("UDP Packet Type: ");
                Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast");
                Serial.print(", From: ");
                Serial.print(packet.remoteIP());
                Serial.print(":");
                Serial.print(packet.remotePort());
                Serial.print(", To: ");
                Serial.print(packet.localIP());
                Serial.print(":");
                Serial.print(packet.localPort());
                Serial.print(", Length: ");
                Serial.print(packet.length());
                Serial.print(", Data: ");
                Serial.write(packet.data(), packet.length());
                Serial.println();
                //reply to the client
                packet.printf("Got %u bytes of data", packet.length());
            });
        }
    }
    
    void loop()
    {
        delay(1000);
        //Send broadcast
        udp.broadcast("Anyone here?");
    }
    
    #include "WiFi.h"
    #include "AsyncUDP.h"
    
    const char * ssid = "my_ssid";
    const char * password = "my_password";
    
    AsyncUDP udp;
    
    int port = 1234;
    
    void setup() {
        Serial.begin(115200);
        WiFi.mode(WIFI_STA); // Make this the client (the server is WIFI_AP)
        WiFi.begin(ssid, password);
        delay(100);
    
        Serial.print("Connecting...");
        // Display a period every 0.5 s to show the user something is happening.
        while (WiFi.waitForConnectResult() != WL_CONNECTED) { 
          Serial.print(".");    
          delay(500);
        }
        Serial.println("");
    
        if(udp.listen(port)) {
            udp.onPacket([](AsyncUDPPacket packet) {
              Serial.print("Received data: ");
                Serial.write(packet.data(), packet.length());
                Serial.println();
            });
        }
    }
    
    void loop(){
        delay(1000);
        udp.broadcastTo("A message for the server from the client.", port);
    }
    
    #include "WiFi.h"
    #include "AsyncUDP.h"
    
    const char *my_ssid = "my_ssid";
    const char *password = "my_password";
    
    int port = 1234;
    
    AsyncUDP udp;
    
    void setup(){
        Serial.begin(115200);
        WiFi.mode(WIFI_AP);
        WiFi.softAP(my_ssid, password);
        delay(100);
    
          if(udp.listen(port)) {
            udp.onPacket([](AsyncUDPPacket packet) {
                Serial.print("Data: ");
                Serial.write(packet.data(), packet.length());
                Serial.println();  
              });
          }
    }
    
    void loop() {
        delay(1000);
        udp.broadcastTo("Anyone here? Love from the server.", port);
    }
    
    服务器端:

    #include "WiFi.h"
    #include "AsyncUDP.h"
    
    const char * ssid = "my_ssid";
    const char * password = "my_password";
    
    AsyncUDP udp;
    
    void setup()
    {
        Serial.begin(115200);
        WiFi.mode(WIFI_STA);
        WiFi.begin(ssid, password);
        if (WiFi.waitForConnectResult() != WL_CONNECTED) {
            Serial.println("WiFi Failed");
            while(1) {
                delay(1000);
            }
        }
        if(udp.connect(IPAddress(192,168,1,100), 1234)) {
            Serial.println("UDP connected");
            udp.onPacket([](AsyncUDPPacket packet) {
                Serial.print("UDP Packet Type: ");
                Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast");
                Serial.print(", From: ");
                Serial.print(packet.remoteIP());
                Serial.print(":");
                Serial.print(packet.remotePort());
                Serial.print(", To: ");
                Serial.print(packet.localIP());
                Serial.print(":");
                Serial.print(packet.localPort());
                Serial.print(", Length: ");
                Serial.print(packet.length());
                Serial.print(", Data: ");
                Serial.write(packet.data(), packet.length());
                Serial.println();
                //reply to the client
                packet.printf("Got %u bytes of data", packet.length());
            });
            //Send unicast
            udp.print("Hello Server!");
        }
    }
    
    void loop()
    {
        delay(1000);
        //Send broadcast on port 1234
        udp.broadcastTo("Anyone here?", 1234);
    }
    
    #include "WiFi.h"
    #include "AsyncUDP.h"
    
    const char * ssid = "my_ssid";
    const char * password = "my_password";
    
    AsyncUDP udp;
    
    void setup()
    {
        Serial.begin(115200);
        WiFi.mode(WIFI_STA);
        WiFi.begin(ssid, password);
        if (WiFi.waitForConnectResult() != WL_CONNECTED) {
            Serial.println("WiFi Failed");
            while(1) {
                delay(1000);
            }
        }
        if(udp.listen(1234)) {
            Serial.print("UDP Listening on IP: ");
            Serial.println(WiFi.localIP());
            udp.onPacket([](AsyncUDPPacket packet) {
                Serial.print("UDP Packet Type: ");
                Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast");
                Serial.print(", From: ");
                Serial.print(packet.remoteIP());
                Serial.print(":");
                Serial.print(packet.remotePort());
                Serial.print(", To: ");
                Serial.print(packet.localIP());
                Serial.print(":");
                Serial.print(packet.localPort());
                Serial.print(", Length: ");
                Serial.print(packet.length());
                Serial.print(", Data: ");
                Serial.write(packet.data(), packet.length());
                Serial.println();
                //reply to the client
                packet.printf("Got %u bytes of data", packet.length());
            });
        }
    }
    
    void loop()
    {
        delay(1000);
        //Send broadcast
        udp.broadcast("Anyone here?");
    }
    
    #include "WiFi.h"
    #include "AsyncUDP.h"
    
    const char * ssid = "my_ssid";
    const char * password = "my_password";
    
    AsyncUDP udp;
    
    int port = 1234;
    
    void setup() {
        Serial.begin(115200);
        WiFi.mode(WIFI_STA); // Make this the client (the server is WIFI_AP)
        WiFi.begin(ssid, password);
        delay(100);
    
        Serial.print("Connecting...");
        // Display a period every 0.5 s to show the user something is happening.
        while (WiFi.waitForConnectResult() != WL_CONNECTED) { 
          Serial.print(".");    
          delay(500);
        }
        Serial.println("");
    
        if(udp.listen(port)) {
            udp.onPacket([](AsyncUDPPacket packet) {
              Serial.print("Received data: ");
                Serial.write(packet.data(), packet.length());
                Serial.println();
            });
        }
    }
    
    void loop(){
        delay(1000);
        udp.broadcastTo("A message for the server from the client.", port);
    }
    
    #include "WiFi.h"
    #include "AsyncUDP.h"
    
    const char *my_ssid = "my_ssid";
    const char *password = "my_password";
    
    int port = 1234;
    
    AsyncUDP udp;
    
    void setup(){
        Serial.begin(115200);
        WiFi.mode(WIFI_AP);
        WiFi.softAP(my_ssid, password);
        delay(100);
    
          if(udp.listen(port)) {
            udp.onPacket([](AsyncUDPPacket packet) {
                Serial.print("Data: ");
                Serial.write(packet.data(), packet.length());
                Serial.println();  
              });
          }
    }
    
    void loop() {
        delay(1000);
        udp.broadcastTo("Anyone here? Love from the server.", port);
    }
    

    总之,我的误解是:

  • AsyncUDP示例不允许直接的客户机-服务器通信。它需要一个中间路由器,例如家庭路由器。这是因为WiFi.mode(WiFi_STA)设置-需要将服务器设置为WiFi.mode(WiFi_AP),以便连接其他ESP32
  • 客户端和服务器都需要使用udp.listen(端口)函数来接收消息(您可以在其中指定端口)。要发送消息,请对服务器使用udp.broadcast(消息),对客户端使用udp.broadcastTo(消息,端口)
  • 下面的代码是我能做的最小的示例,仍然有效。我确信有更好的例子可用,但这是我让示例在两个ESP32之间进行通信的方式,无需HTTP请求,使用中间路由器等

    客户端:

    #include "WiFi.h"
    #include "AsyncUDP.h"
    
    const char * ssid = "my_ssid";
    const char * password = "my_password";
    
    AsyncUDP udp;
    
    void setup()
    {
        Serial.begin(115200);
        WiFi.mode(WIFI_STA);
        WiFi.begin(ssid, password);
        if (WiFi.waitForConnectResult() != WL_CONNECTED) {
            Serial.println("WiFi Failed");
            while(1) {
                delay(1000);
            }
        }
        if(udp.connect(IPAddress(192,168,1,100), 1234)) {
            Serial.println("UDP connected");
            udp.onPacket([](AsyncUDPPacket packet) {
                Serial.print("UDP Packet Type: ");
                Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast");
                Serial.print(", From: ");
                Serial.print(packet.remoteIP());
                Serial.print(":");
                Serial.print(packet.remotePort());
                Serial.print(", To: ");
                Serial.print(packet.localIP());
                Serial.print(":");
                Serial.print(packet.localPort());
                Serial.print(", Length: ");
                Serial.print(packet.length());
                Serial.print(", Data: ");
                Serial.write(packet.data(), packet.length());
                Serial.println();
                //reply to the client
                packet.printf("Got %u bytes of data", packet.length());
            });
            //Send unicast
            udp.print("Hello Server!");
        }
    }
    
    void loop()
    {
        delay(1000);
        //Send broadcast on port 1234
        udp.broadcastTo("Anyone here?", 1234);
    }
    
    #include "WiFi.h"
    #include "AsyncUDP.h"
    
    const char * ssid = "my_ssid";
    const char * password = "my_password";
    
    AsyncUDP udp;
    
    void setup()
    {
        Serial.begin(115200);
        WiFi.mode(WIFI_STA);
        WiFi.begin(ssid, password);
        if (WiFi.waitForConnectResult() != WL_CONNECTED) {
            Serial.println("WiFi Failed");
            while(1) {
                delay(1000);
            }
        }
        if(udp.listen(1234)) {
            Serial.print("UDP Listening on IP: ");
            Serial.println(WiFi.localIP());
            udp.onPacket([](AsyncUDPPacket packet) {
                Serial.print("UDP Packet Type: ");
                Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast");
                Serial.print(", From: ");
                Serial.print(packet.remoteIP());
                Serial.print(":");
                Serial.print(packet.remotePort());
                Serial.print(", To: ");
                Serial.print(packet.localIP());
                Serial.print(":");
                Serial.print(packet.localPort());
                Serial.print(", Length: ");
                Serial.print(packet.length());
                Serial.print(", Data: ");
                Serial.write(packet.data(), packet.length());
                Serial.println();
                //reply to the client
                packet.printf("Got %u bytes of data", packet.length());
            });
        }
    }
    
    void loop()
    {
        delay(1000);
        //Send broadcast
        udp.broadcast("Anyone here?");
    }
    
    #include "WiFi.h"
    #include "AsyncUDP.h"
    
    const char * ssid = "my_ssid";
    const char * password = "my_password";
    
    AsyncUDP udp;
    
    int port = 1234;
    
    void setup() {
        Serial.begin(115200);
        WiFi.mode(WIFI_STA); // Make this the client (the server is WIFI_AP)
        WiFi.begin(ssid, password);
        delay(100);
    
        Serial.print("Connecting...");
        // Display a period every 0.5 s to show the user something is happening.
        while (WiFi.waitForConnectResult() != WL_CONNECTED) { 
          Serial.print(".");    
          delay(500);
        }
        Serial.println("");
    
        if(udp.listen(port)) {
            udp.onPacket([](AsyncUDPPacket packet) {
              Serial.print("Received data: ");
                Serial.write(packet.data(), packet.length());
                Serial.println();
            });
        }
    }
    
    void loop(){
        delay(1000);
        udp.broadcastTo("A message for the server from the client.", port);
    }
    
    #include "WiFi.h"
    #include "AsyncUDP.h"
    
    const char *my_ssid = "my_ssid";
    const char *password = "my_password";
    
    int port = 1234;
    
    AsyncUDP udp;
    
    void setup(){
        Serial.begin(115200);
        WiFi.mode(WIFI_AP);
        WiFi.softAP(my_ssid, password);
        delay(100);
    
          if(udp.listen(port)) {
            udp.onPacket([](AsyncUDPPacket packet) {
                Serial.print("Data: ");
                Serial.write(packet.data(), packet.length());
                Serial.println();  
              });
          }
    }
    
    void loop() {
        delay(1000);
        udp.broadcastTo("Anyone here? Love from the server.", port);
    }
    
    服务器端:

    #include "WiFi.h"
    #include "AsyncUDP.h"
    
    const char * ssid = "my_ssid";
    const char * password = "my_password";
    
    AsyncUDP udp;
    
    void setup()
    {
        Serial.begin(115200);
        WiFi.mode(WIFI_STA);
        WiFi.begin(ssid, password);
        if (WiFi.waitForConnectResult() != WL_CONNECTED) {
            Serial.println("WiFi Failed");
            while(1) {
                delay(1000);
            }
        }
        if(udp.connect(IPAddress(192,168,1,100), 1234)) {
            Serial.println("UDP connected");
            udp.onPacket([](AsyncUDPPacket packet) {
                Serial.print("UDP Packet Type: ");
                Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast");
                Serial.print(", From: ");
                Serial.print(packet.remoteIP());
                Serial.print(":");
                Serial.print(packet.remotePort());
                Serial.print(", To: ");
                Serial.print(packet.localIP());
                Serial.print(":");
                Serial.print(packet.localPort());
                Serial.print(", Length: ");
                Serial.print(packet.length());
                Serial.print(", Data: ");
                Serial.write(packet.data(), packet.length());
                Serial.println();
                //reply to the client
                packet.printf("Got %u bytes of data", packet.length());
            });
            //Send unicast
            udp.print("Hello Server!");
        }
    }
    
    void loop()
    {
        delay(1000);
        //Send broadcast on port 1234
        udp.broadcastTo("Anyone here?", 1234);
    }
    
    #include "WiFi.h"
    #include "AsyncUDP.h"
    
    const char * ssid = "my_ssid";
    const char * password = "my_password";
    
    AsyncUDP udp;
    
    void setup()
    {
        Serial.begin(115200);
        WiFi.mode(WIFI_STA);
        WiFi.begin(ssid, password);
        if (WiFi.waitForConnectResult() != WL_CONNECTED) {
            Serial.println("WiFi Failed");
            while(1) {
                delay(1000);
            }
        }
        if(udp.listen(1234)) {
            Serial.print("UDP Listening on IP: ");
            Serial.println(WiFi.localIP());
            udp.onPacket([](AsyncUDPPacket packet) {
                Serial.print("UDP Packet Type: ");
                Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast");
                Serial.print(", From: ");
                Serial.print(packet.remoteIP());
                Serial.print(":");
                Serial.print(packet.remotePort());
                Serial.print(", To: ");
                Serial.print(packet.localIP());
                Serial.print(":");
                Serial.print(packet.localPort());
                Serial.print(", Length: ");
                Serial.print(packet.length());
                Serial.print(", Data: ");
                Serial.write(packet.data(), packet.length());
                Serial.println();
                //reply to the client
                packet.printf("Got %u bytes of data", packet.length());
            });
        }
    }
    
    void loop()
    {
        delay(1000);
        //Send broadcast
        udp.broadcast("Anyone here?");
    }
    
    #include "WiFi.h"
    #include "AsyncUDP.h"
    
    const char * ssid = "my_ssid";
    const char * password = "my_password";
    
    AsyncUDP udp;
    
    int port = 1234;
    
    void setup() {
        Serial.begin(115200);
        WiFi.mode(WIFI_STA); // Make this the client (the server is WIFI_AP)
        WiFi.begin(ssid, password);
        delay(100);
    
        Serial.print("Connecting...");
        // Display a period every 0.5 s to show the user something is happening.
        while (WiFi.waitForConnectResult() != WL_CONNECTED) { 
          Serial.print(".");    
          delay(500);
        }
        Serial.println("");
    
        if(udp.listen(port)) {
            udp.onPacket([](AsyncUDPPacket packet) {
              Serial.print("Received data: ");
                Serial.write(packet.data(), packet.length());
                Serial.println();
            });
        }
    }
    
    void loop(){
        delay(1000);
        udp.broadcastTo("A message for the server from the client.", port);
    }
    
    #include "WiFi.h"
    #include "AsyncUDP.h"
    
    const char *my_ssid = "my_ssid";
    const char *password = "my_password";
    
    int port = 1234;
    
    AsyncUDP udp;
    
    void setup(){
        Serial.begin(115200);
        WiFi.mode(WIFI_AP);
        WiFi.softAP(my_ssid, password);
        delay(100);
    
          if(udp.listen(port)) {
            udp.onPacket([](AsyncUDPPacket packet) {
                Serial.print("Data: ");
                Serial.write(packet.data(), packet.length());
                Serial.println();  
              });
          }
    }
    
    void loop() {
        delay(1000);
        udp.broadcastTo("Anyone here? Love from the server.", port);
    }
    

    这只是对杰里米答案的一个适度补充。 文本说明服务器使用
    udp.broadcast(消息)
    ,而客户端使用
    udp.broadcastTo(消息,端口)
    另一方面,所提供的代码对两侧使用
    广播。
    我想知道为什么会这样,在搜索了源代码AsyncUPD.cpp之后,我发现
    udp.broadcast
    实际上会通过调用
    udp.broadcastTo
    来完成它的工作,并使用本地端口作为第二个参数。 请参阅:第809行。
    这是一个小细节,但我认为值得一提。它允许我配对相同类型的ESP32板,并且(对我来说最重要的)使用相同的代码进行UDP操作。因此,这两个董事会可以一起工作(分层或不分层),也可以自主工作。

    这只是对Jeremy答案的一个适度补充。 文本说明服务器使用
    udp.broadcast(消息)
    ,而客户端使用
    udp.broadcastTo(消息,端口)
    另一方面,所提供的代码对两侧使用
    广播。
    我想知道为什么会这样,在搜索了源代码AsyncUPD.cpp之后,我发现
    udp.broadcast
    实际上会通过调用
    udp.broadcastTo
    来完成它的工作,并使用本地端口作为第二个参数。 请参阅:第809行。
    这是一个小细节,但我认为值得一提。它允许我配对相同类型的ESP32板,并且(对我来说最重要的)使用相同的代码进行UDP操作。因此,两个板可以一起工作(分层或不分层)或自主工作。

    运行wifiscan示例谢谢@Juraj!好主意。我运行了WiFiScan,但只获得了我的家庭WiFi网络,没有任何东西命名为“my_ssid”。当我将WiFi.mode从WiFi_STA更改为WiFi_AP_STA时,它发现了我在ESP32上使用的旧SSID(而不是新的SSID),该SSID来自我之前尝试过的circuits4you.com教程。此外,每隔一次扫描仅列出一次(其余扫描仅显示家庭网络,而不显示ESP32)。我需要对ESP32做些什么来重置以前固件的所有效果吗?你想让一个ESP32成为AP吗?然后启动AP。您可以配置SoftAP的名称。TCP客户端/服务器与SoftAP和连接的站点之间没有关系。其中一个站点可以是TCP服务器。带SoftAP的esp可以是TCP客户端之一。很高兴知道SoftAP和站点设置不是问题所在,因为它们与客户机-服务器示例没有关系。但我认为这并不能解释为什么示例代码与我的ESP32和上面的代码不兼容。
    WiFi.softAP(ssid,password)运行wifiscan示例谢谢@Juraj!好主意。我运行了WiFiScan,但只获得了我的家庭WiFi网络,没有任何东西命名为“my_ssid”。当我将WiFi.mode从WiFi_STA更改为WiFi_AP_STA时,它发现了我在ESP32上使用的旧SSID(而不是新的SSID),该SSID来自我之前尝试过的circuits4you.com教程。此外,每隔一次扫描仅列出一次(其余扫描仅显示家庭网络,而不显示ESP32)。我需要对ESP32做些什么来重置以前固件的所有效果吗?你想让一个ESP32成为AP吗?然后启动AP。您可以配置SoftAP的名称。TCP客户端/服务器与SoftAP和连接的站点之间没有关系。其中一个站点可以是TCP服务器。带SoftAP的esp可以是TCP客户端之一。很高兴知道SoftAP和站点设置不是问题所在,因为它们与客户机-服务器示例没有关系。但我不认为这能解释为什么