This commit is contained in:
DashyFox 2024-10-29 16:55:26 +03:00
parent a102cd3b5f
commit 10a6adea0d

111
examples/Server/readme.md Normal file
View File

@ -0,0 +1,111 @@
# Документация EthernetMaketServer
`EthernetMaketServer` — это класс, предназначенный для упрощения серверных операций с использованием библиотеки Ethernet. Он позволяет обрабатывать входящие подключения клиентов и эффективно обрабатывать данные.
## Инициализация
Для инициализации `EthernetMaketServer` необходимо указать порт, на котором сервер будет слушать входящие подключения. Вот как это можно настроить:
```cpp
#include <EthernetMaket.h>
// Определяем пин 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`. Настройте код в соответствии с вашими конкретными потребностями.