Mehrere Clients entgegennehmen?

Hallo an alle. Bis jz ist es mir gelungen eine WiFI Verbindung zwischen Server(ESP32) und Client(ESP32) aufzubauen. Jedoch muss der Server mehrere Clients annehmen können.

WiFiClient client = server.available();

if (client) {
Serial.println("New Client.");
String currentLine = "";
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.print(c);

}
}
}

In dem darüberliegenden Codeabschnitt nehme ich nur einen Client entgegen. Falls jemand bereits einen AccessPoint konfiguriert hat, welcher mit mehreren Clients kommunizieren kann oder eine Lösung kennt, bitte um Hilfe.

Danke für jegliche Hilfe.

ich hab auf keinem meinem Server ein Problem mit parallelen Session von unterschiedlichen Clients. Wie viele parallele Clients willst du bedienen?

Ich habe noch kein Problem! Da ich nicht weiß wie ich 2 Clients annehme. Mit server.available() rufe ich nur den ersten Client auf, aber falls ein weiter hinzukommt..... Weiß nicht weiter.

Ich möchte 2 Clienten bedienen!

Danke für die Antwort

Du wirst auf die Art mit so vielen Klienten (gleichzeitig) quatschen können, wie die Ressourcen her geben.

Wieviele Slots der ESP32 (gleichzeitig) erlaubt, sollte dessen Doku dir sagen können

Mit server.available() rufe ich nur den ersten Client auf, aber falls ein weiter hinzukommt.....

Das stimmt doch gar nicht!

Deine Denke ist neben der Spur.

WiFiClient client = server.available();

Jedes mal liefert dir server.available() eine Klient Verbindung, wenn denn gerade ein Klient was wissen will.
Eine bevorzugte Reihenfolge "erste,zweiter" gibt es nicht.

Ich kenne mich leider noch nicht so gut aus. Mache ein Schulprojekt.

Aber laut diesem link

https://www.arduino.cc/en/Reference/ServerAvailable

macht die Funktion genau das was ich benötige außer ,dass ich nicht einen sondern 2 Clients ansprechen möchte.

Wie gesagt: Deine Denke!

dass ich nicht einen sondern 2 Clients ansprechen möchte.

Denke anders rum!

Denn niemals spricht der Server den Klienten an.
Das steckt schon in der Definition von Server und Klient.

Das war blöd formuliert. Natürlich ruft der Client den Server auf. Jedoch hab ich auf der Server Seite ein Client Object welches genau einen client beinhaltet der Daten zum lesen hat. Hier denke ich ist mein Problem. Da ich nur von einem Client die Daten lesen kann und wenn eine weitere Verbindung reinkommt, wird diese ignoriert.

Probiere es doch einfach aus, wenn Du uns nicht glaubst.
Das Problem besteht ausschließlich in Deinem Kopf.

Gruß Tommy

wenn eine weitere Verbindung reinkommt, wird diese ignoriert.

Ja, solange du kein server.available() aufrufst, wird die Klientanfrage ignoriert.

Die Frage ist dann natürlich:
Warum ignorierst du die Klientanfragen, wenn du das doch gar nicht willst?

Hallo,

chrissi_29:
Das war blöd formuliert. Natürlich ruft der Client den Server auf. Jedoch hab ich auf der Server Seite ein Client Object welches genau einen client beinhaltet der Daten zum lesen hat. Hier denke ich ist mein Problem. Da ich nur von einem Client die Daten lesen kann und wenn eine weitere Verbindung reinkommt, wird diese ignoriert.

Erstmal: server.available() sagt Dir, das ein Client was will. Du bearbeitest das C schickst dem Cleint seine gewünschte Antwort und schließt die Verbindung.
Wenn da noch ein Client was will wird Dir server.available() das mitteilen. Dann kannst Du Dich um den aktuellen Inhalt des Client Object kümmern usw. Wie Du die Anfragen Deiner verschiedenen Clients auseinander hälsst, ist Dein Problem. z.B. kann ja Client 1 die Seite client1.html anforden, Client 2 eben client2.html usw.
Damit weißt Du auch immer, wer da was will.
Natürlich sollte die BEdienung eines Clients nicht länger als unbedingt nötig dauern, sonst landest Dein Client im TimeOut weil das Ziel nicht erreichbar ist. Ist aber mit dem ESP32 kein wirkliches Problem.

Gruß aus Berlin
Michael