18 lines
1.5 KiB
Markdown
18 lines
1.5 KiB
Markdown
# Задача 07 — TCP-эхо-сервер на epoll (Linux, C++)
|
|
|
|
Написать сервер: принимает TCP-соединения на `127.0.0.1:<порт из argv[1]>`, эхо всех
|
|
принятых байт обратно в то же соединение, обслуживает несколько клиентов одновременно,
|
|
завершается по SIGTERM/SIGINT аккуратно (exit 0).
|
|
|
|
Требования:
|
|
- мультиплексирование через `epoll` (не блокирующий `accept` в цикле, не поток на клиента);
|
|
- сокеты неблокирующие, обработка `EAGAIN`/`EINTR`, частичные чтения и записи;
|
|
- `SO_REUSEADDR`, bind на 127.0.0.1, прослушивание на нужном порту;
|
|
- до 64 одновременных соединений, закрытие по EOF со стороны клиента;
|
|
- никаких утечек дескрипторов (тест проверяет закрытие).
|
|
|
|
Запускается как самостоятельный бинарник: `./solution <порт>`.
|
|
Проверка: `python3 grade.py 07` — тест сам поднимает сервер, открывает 3 соединения,
|
|
льёт данные, проверяет эхо и корректное завершение по SIGTERM.
|
|
Критерий: все `ok` + ревью кода (использование epoll, обработка ошибок).
|