Я хочу отправить широковещательное сообщение со своего компьютера, а затем ответить на него с ESP32
Мне удается получить широковещательное сообщение, но я не могу отправить ответное сообщение (я не вижу его в Wireshark компьютера)
Я использовал популярную версию из Интернета, поэтому код должен быть в порядке, но я не понимаю, в чем дело.
Я довольно новичок в Arduino, поэтому не совсем понимаю все аспекты
это код, который я использую.
Возможно, стоит упомянуть, что я использую компьютер и Wi-Fi ESP32 на своей горячей точке iPhone.
Я попытался отправить UDP-сообщение на ESP32 самому себе, и это сработало, поэтому проблема должна заключаться в том, что ESP32 не может отправлять сообщения в сеть.
#include "WiFi.h"
#define led 2
#include <Thread.h>
#include <WiFiUdp.h>
const char* ssid = "ssid";
const char* password = "password";
char packetBuffer[255];
WiFiUDP Udp;
WiFiServer wifiServer(10100);
Thread myThread = Thread();
void setup() {
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
Serial.begin(115200);
myThread.enabled = true;
myThread.setInterval(10);
myThread.ThreadName = "myThread tag";
myThread.onRun(listen_broad);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Connecting to WiFi..");
}
Serial.println("Connected to the WiFi network");
Serial.println(WiFi.localIP());
wifiServer.begin();
Udp.begin(10100);
}
void listen_broad(){
int packetSize = Udp.parsePacket();
if (packetSize){
Serial.print("Received packet of size ");
Serial.println(packetSize);
Serial.print("From ");
IPAddress remoteIp = Udp.remoteIP();
Serial.print(remoteIp);
Serial.print(", port ");
Serial.println(Udp.remotePort());
int len = Udp.read(packetBuffer, 255);
if (len > 0) packetBuffer[len] = 0;
Serial.println("Contents:");
Serial.println(packetBuffer);
// send a reply, to the IP address and port that sent us the packet we received
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
int i = 0;
char ReplyBuffer[] = "ACK";
while (ReplyBuffer[i] != 0)
Udp.write((uint8_t)ReplyBuffer[i++]);
Udp.endPacket();
}
}
void loop() {
if(myThread.shouldRun()){
myThread.run();
}
WiFiClient client = wifiServer.available();
if (client) {
client.write("nonono");
while (client.connected()) {
while (client.available()>0){
char c = client.read();
Serial.write(c);
switch (c) {
case '1':
//TOGGLE LIGHT//
if(digitalRead(led)){
Serial.write("Turning OFF");
digitalWrite(led, LOW);
}
else{
Serial.write("Turning ON");
digitalWrite(led, HIGH);
}
break;
/////////////////
case '2':
//CLOSE////////
client.stop();
break;
////////////////
default:
Serial.write("DEF");
break;
}
}
delay(10);
}
Serial.println("Client disconnected");
}
}