Files
eduplan-cpp-eltex/diag/tasks/07_epoll/task.md
T

1.5 KiB

Задача 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, обработка ошибок).