diff --git a/examples/Server/readme.md b/examples/Server/readme.md new file mode 100644 index 0000000..de5c0d6 --- /dev/null +++ b/examples/Server/readme.md @@ -0,0 +1,111 @@ +# Документация EthernetMaketServer + +`EthernetMaketServer` — это класс, предназначенный для упрощения серверных операций с использованием библиотеки Ethernet. Он позволяет обрабатывать входящие подключения клиентов и эффективно обрабатывать данные. + +## Инициализация + +Для инициализации `EthernetMaketServer` необходимо указать порт, на котором сервер будет слушать входящие подключения. Вот как это можно настроить: + +```cpp +#include + +// Определяем пин CS для W5500 и порт сервера +#define W5500_CS_PIN PA2 +#define SERVER_PORT 1337 + +// Определяем MAC и IP адреса +byte mac[] = {0xDA, 0x7A, 0xFF, 0x00, 0x00, 0x00}; +byte ip[] = {192, 168, 254, 254}; + +// Определяем шлюз и маску подсети +uint8_t gateway[] = {192, 168, 0, 1}; +uint8_t subnet[] = {255, 255, 0, 0}; + +// Создаем экземпляр EthernetMaketServer +EthernetMaketServer server(SERVER_PORT); + +void setup() { + Serial.begin(115200); + + // Инициализация SPI и Ethernet + SPI.begin(); + pinMode(W5500_CS_PIN, OUTPUT); + digitalWrite(W5500_CS_PIN, HIGH); + + Ethernet.setCsPin(W5500_CS_PIN); + Ethernet.init(); + Ethernet.begin(mac, ip, subnet, gateway, gateway); + + // Запуск сервера + server.begin(); + Serial.print("Сервер запущен на "); + Serial.println(Ethernet.localIP()); +} + +void loop() { + server.tick(); +} +``` + +## Использование Колбэка + +Вы можете задать функцию-колбэк для обработки входящих подключений клиентов. Эта функция будет вызываться всякий раз, когда клиент подключается и отправляет данные. + +```cpp +void serverHandler(EthernetClient client) { + byte buf[BUFFERSIZE]; + int len = client.read(buf, sizeof(buf)); + + // Обработка полученных данных + // ... + + // Отправка ответа клиенту + client.write("response data"); + + if(/* соединение больше не нужно */){ + client.stop(); + } +} + +void setup() { + // ... (код инициализации) + + // Установка обработчика сервера + server.setServerHandler(serverHandler); +} +``` + +## Использование Без Колбэка + +Если вы предпочитаете обрабатывать подключения клиентов без колбэка, вы можете напрямую проверять доступных клиентов в функции `loop()`. + +```cpp +void loop() { + for (int sock = 0; sock < MAX_SOCK_NUM; sock++) { + EthernetMaketClient client = server.available(sock); + if (client.connected() && client.available() > 0) { + // Обработка подключения клиента + byte buf[BUFFERSIZE]; + int len = client.read(buf, sizeof(buf)); + + // Обработка полученных данных + // ... + + // Отправка ответа клиенту + client.write("response data"); + + if(/* соединение больше не нужно */){ + client.stop(); + } + } + } +} +``` + +## Дополнительные Заметки + +- Убедитесь, что пин CS и сетевые настройки (MAC, IP, шлюз, маска подсети) правильно настроены для вашей сети. +- Метод `tick()` должен вызываться регулярно в `loop()`, чтобы обрабатывать входящие подключения и данные. +- Функция `serverHandler` должна быть разработана для обработки конкретного протокола или формата данных, который вы используете. + +Эта документация предоставляет базовый обзор того, как использовать класс `EthernetMaketServer`. Настройте код в соответствии с вашими конкретными потребностями. \ No newline at end of file