From 9934fda584bab9e2edd87723ae643e54d4cb221f Mon Sep 17 00:00:00 2001 From: DashyFox Date: Mon, 9 Dec 2024 15:36:16 +0300 Subject: [PATCH] vanilla --- src/EthernetOverride/Server.cpp | 152 +++++++++++++++++--------------- src/EthernetOverride/Server.h | 10 +-- 2 files changed, 88 insertions(+), 74 deletions(-) diff --git a/src/EthernetOverride/Server.cpp b/src/EthernetOverride/Server.cpp index 34b953c..78a4d29 100644 --- a/src/EthernetOverride/Server.cpp +++ b/src/EthernetOverride/Server.cpp @@ -12,85 +12,99 @@ void EthernetMaketServer::resetServerHandler() serverHandler = [](EthernetMaketClient &sclient) {}; } -EthernetMaketClient EthernetMaketServer::available(int sock) -{ - accept(sock); - EthernetClient client(sock); - if (EthernetClass::_server_port[sock] == _port && - (client.status() == SnSR::ESTABLISHED || - client.status() == SnSR::CLOSE_WAIT)) - { - if (client.available()) - { - return std::move(EthernetMaketClient(client)); - } - } - return std::move(EthernetMaketClient(MAX_SOCK_NUM)); -} +// EthernetMaketClient EthernetMaketServer::available(int sock) +// { +// accept(sock); +// EthernetClient client(sock); +// if (EthernetClass::_server_port[sock] == _port && +// (client.status() == SnSR::ESTABLISHED || +// client.status() == SnSR::CLOSE_WAIT)) +// { +// if (client.available()) +// { +// return std::move(EthernetMaketClient(client)); +// } +// } +// return std::move(EthernetMaketClient(MAX_SOCK_NUM)); +// } -void EthernetMaketServer::accept(int sock) -{ - int listening = 0; - EthernetClient client(sock); +// void EthernetMaketServer::accept(int sock) +// { +// int listening = 0; +// EthernetClient client(sock); - if (EthernetClass::_server_port[sock] == _port) - { - if (client.status() == SnSR::LISTEN) - { - listening = 1; - } - else if (client.status() == SnSR::CLOSE_WAIT && !client.available()) - { - Serial.println("HARD STOP"); - client.stop(); - } - } +// if (EthernetClass::_server_port[sock] == _port) +// { +// if (client.status() == SnSR::LISTEN) +// { +// listening = 1; +// } +// else if (client.status() == SnSR::CLOSE_WAIT && !client.available()) +// { +// Serial.println("HARD STOP"); +// client.stop(); +// } +// } - if (!listening) - { - // begin(); - begin(sock); // added - } -} +// if (!listening) +// { +// // begin(); +// begin(sock); // added +// } +// } -void EthernetMaketServer::begin(int sock) -{ - EthernetClient client(sock); - if (client.status() == SnSR::CLOSED) - { - socket(sock, SnMR::TCP, _port, 0); - listen(sock); - EthernetClass::_server_port[sock] = _port; - serverSocket = sock; - return; - } - // Serial.println(F("EthernetMaketServer::begin() FAIL")); -} - -void EthernetMaketServer::begin() -{ - for (int sock = 0; sock < MAX_SOCK_NUM; sock++) { - EthernetClient client(sock); - if (client.status() == SnSR::CLOSED) { - socket(sock, SnMR::TCP, _port, 0); - listen(sock); - EthernetClass::_server_port[sock] = _port; - serverSocket = sock; - break; - } - } - // Serial.println(F("EthernetMaketServer::begin() FAIL")); -} +// void EthernetMaketServer::begin(int sock) +// { +// EthernetClient client(sock); +// if (client.status() == SnSR::CLOSED) +// { +// socket(sock, SnMR::TCP, _port, 0); +// listen(sock); +// EthernetClass::_server_port[sock] = _port; +// serverSocket = sock; +// return; +// } +// // Serial.println(F("EthernetMaketServer::begin() FAIL")); +// } +// void EthernetMaketServer::begin() +// { +// for (int sock = 0; sock < MAX_SOCK_NUM; sock++) { +// EthernetClient client(sock); +// if (client.status() == SnSR::CLOSED) { +// socket(sock, SnMR::TCP, _port, 0); +// listen(sock); +// EthernetClass::_server_port[sock] = _port; +// serverSocket = sock; +// break; +// } +// } +// // Serial.println(F("EthernetMaketServer::begin() FAIL")); +// } +uint8_t buf[256]; void EthernetMaketServer::tick() { // for (int sock = 0; sock < MAX_SOCK_NUM; sock++) { - sclient = available(serverSocket); - if (sclient.connected() && sclient.available() > 0) + EthernetClient sclient = available(/* serverSocket */); + size_t dataSize; + if (sclient.connected() && (dataSize = sclient.available()) > 0) { - sclient.activityUpdate(); - serverHandler(sclient); + Serial.println("Receive!"); + + memset(buf,0x00,sizeof(buf)); + sclient.read(buf, sizeof(buf)); + + Serial.print("Received data: "); + for (int i = 0; i < dataSize; i++) + { + Serial.print(buf[i], HEX); + Serial.print(" "); + } + Serial.println("\n"); + + // sclient.activityUpdate(); + //* serverHandler(sclient); } diff --git a/src/EthernetOverride/Server.h b/src/EthernetOverride/Server.h index 7bf41d4..bf34756 100644 --- a/src/EthernetOverride/Server.h +++ b/src/EthernetOverride/Server.h @@ -8,8 +8,8 @@ class EthernetMaketClient; class EthernetMaketServer : public EthernetServer { private: - EthernetClient available(); - void accept(int sock); + // EthernetClient available(); + // void accept(int sock); std::function serverHandler = [](EthernetMaketClient &sclient) {}; SOCKET serverSocket = MAX_SOCK_NUM; @@ -18,12 +18,12 @@ private: public: using EthernetServer::EthernetServer; - EthernetMaketClient available(int sock); + // EthernetMaketClient available(int sock); void setServerHandler(std::function handler); void resetServerHandler(); - void begin() override; - void begin(int sock); + // void begin() override; + // void begin(int sock); void tick(); };