summaryrefslogtreecommitdiff
path: root/libraries/ESPAsyncTCP/examples/ClientServer/Server/Server.ino
diff options
context:
space:
mode:
authorschererleander <leander@schererleander.de>2026-01-20 08:34:54 +0100
committerschererleander <leander@schererleander.de>2026-01-20 08:34:54 +0100
commit85ea4e995a75abe061f6fc375ea0481084dddd43 (patch)
tree7eb5d57653ecd8f041aeac4e68d7d554c1168681 /libraries/ESPAsyncTCP/examples/ClientServer/Server/Server.ino
initial commitHEADmain
Diffstat (limited to 'libraries/ESPAsyncTCP/examples/ClientServer/Server/Server.ino')
-rw-r--r--libraries/ESPAsyncTCP/examples/ClientServer/Server/Server.ino73
1 files changed, 73 insertions, 0 deletions
diff --git a/libraries/ESPAsyncTCP/examples/ClientServer/Server/Server.ino b/libraries/ESPAsyncTCP/examples/ClientServer/Server/Server.ino
new file mode 100644
index 0000000..c8c9b7f
--- /dev/null
+++ b/libraries/ESPAsyncTCP/examples/ClientServer/Server/Server.ino
@@ -0,0 +1,73 @@
+#include <ESP8266WiFi.h>
+#include <ESPAsyncTCP.h>
+#include <DNSServer.h>
+#include <vector>
+
+#include "config.h"
+
+static DNSServer DNS;
+
+static std::vector<AsyncClient*> clients; // a list to hold all clients
+
+ /* clients events */
+static void handleError(void* arg, AsyncClient* client, int8_t error) {
+ Serial.printf("\n connection error %s from client %s \n", client->errorToString(error), client->remoteIP().toString().c_str());
+}
+
+static void handleData(void* arg, AsyncClient* client, void *data, size_t len) {
+ Serial.printf("\n data received from client %s \n", client->remoteIP().toString().c_str());
+ Serial.write((uint8_t*)data, len);
+
+ // reply to client
+ if (client->space() > 32 && client->canSend()) {
+ char reply[32];
+ sprintf(reply, "this is from %s", SERVER_HOST_NAME);
+ client->add(reply, strlen(reply));
+ client->send();
+ }
+}
+
+static void handleDisconnect(void* arg, AsyncClient* client) {
+ Serial.printf("\n client %s disconnected \n", client->remoteIP().toString().c_str());
+}
+
+static void handleTimeOut(void* arg, AsyncClient* client, uint32_t time) {
+ Serial.printf("\n client ACK timeout ip: %s \n", client->remoteIP().toString().c_str());
+}
+
+
+/* server events */
+static void handleNewClient(void* arg, AsyncClient* client) {
+ Serial.printf("\n new client has been connected to server, ip: %s", client->remoteIP().toString().c_str());
+
+ // add to list
+ clients.push_back(client);
+
+ // register events
+ client->onData(&handleData, NULL);
+ client->onError(&handleError, NULL);
+ client->onDisconnect(&handleDisconnect, NULL);
+ client->onTimeout(&handleTimeOut, NULL);
+}
+
+void setup() {
+ Serial.begin(115200);
+ delay(20);
+
+ // create access point
+ while (!WiFi.softAP(SSID, PASSWORD, 6, false, 15)) {
+ delay(500);
+ }
+
+ // start dns server
+ if (!DNS.start(DNS_PORT, SERVER_HOST_NAME, WiFi.softAPIP()))
+ Serial.printf("\n failed to start dns service \n");
+
+ AsyncServer* server = new AsyncServer(TCP_PORT); // start listening on tcp port 7050
+ server->onClient(&handleNewClient, server);
+ server->begin();
+}
+
+void loop() {
+ DNS.processNextRequest();
+}