ESP32 wifi server con múltiples clientes

Hola a todos

Tengo un programa donde configuro mi ESP32 como servidor y envió datos generados aleatoriamente, el problema es que solo puedo conectar 1 cliente a la vez, lo que quiero es que se puedan conectar múltiples clientes y todos reciban la misma información,

pongo el código que tengo en mi ESP32 como servidor

#include <WiFi.h>
 
const char* ssid = "SSID";
const char* password =  "Password";

char data[9];
 
WiFiServer wifiServer(80);
 
void setup() {
 
  Serial.begin(115200);
 
  delay(1000);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Conectando a WiFi..");
  }
 
  Serial.println("Conectado a la red WiFi network");
  Serial.println(WiFi.localIP());

 
  wifiServer.begin();
}
 
void loop() {
 
  WiFiClient client = wifiServer.available();
 
  if (client) {
 
    while(client.connected()) {
      //Serial.println("Client Connected");
    
        data[0] = random(30,50);
        data[1] = random(30,50);
        data[2] = random(30,50);
        data[3] = random(30,50);
        data[4] = random(30,50);
        data[5] = random(30,50);
        data[6] = random(30,50);
        data[7] = random(30,50);
        data[8] = random(30,50);
        
        client.write(data,9);
        Serial.println(int(data[0]));
        Serial.println(int(data[1]));
        Serial.println(int(data[2]));
        Serial.println(int(data[3]));
        Serial.println(int(data[4]));
        Serial.println(int(data[5]));
        Serial.println(int(data[6]));
        Serial.println(int(data[7]));
        Serial.println(int(data[8]));
        delay(1000);
    } 
  }
}

Los clientes los estoy manejando con python
el código del cliente es el siguiente

import socket           
 
sock = socket.socket()
 
host = "192.168.1.68" #ESP32 IP in local network
port = 80             #ESP32 Server Port    
 
sock.connect((host, port))

data = ""
lista = [0,0,0,0,0,0,0,0,0]
x = 0

while True:
    
    data = sock.recv(1)
    #x = data.decode()
    #y = x.split("p")
    buffer = int.from_bytes(data,"big")
    lista[x] = buffer
    x = x + 1
    if x >=9:
        print(lista)
        x=0

la idea es que todos los clientes tengan el mismo código y reciban los mismos datos
pero solo me permite conectar 1 cliente a la vez

Su publicacion se MUEVE a su ubicacion actual ya que es mas adecuada.

Yo he usado este servidor y funciona con varios clientes. Yo lo estoy usando con https y no puede manejar más de 4 o cinco conexiones, el http no creo que tengas problemas de memoria. Saludos. https://github.com/fhessel/esp32_https_server

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.