# Документация 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`. Настройте код в соответствии с вашими конкретными потребностями.