/static_server_course_project

🌍 Курсовой проект по дисциплине "Компьютерные сети" (МГТУ ИУ7 2023)

Primary LanguageCGNU General Public License v3.0GPL-3.0

Курсовой проект по дисциплине "Компьютерные сети"

Задание: Написать классический статик-сервер для отдачи контента с диска.

Требования:

  • поддержка запросов GET и HEAD;
  • поддержка статусов 200, 403, 404, 405;
  • выставление content-type в зависимости от типа файла (поддержка html, css, js, png, jpg, jpeg, swf, gif);
  • корректная передача файлов размером в 100Мб;
  • обработка ошибки в случае выхода адреса за корневую директорию сервера;
  • реализация логгера;
  • реализация архитектуры prefork + pselect().

Средства реализации:

  • ОС на базе ядра Linux (версия ядра - 6.5.13)
  • C (pselect, socket и т.д.)

Примечание. По ошибке реализовал архитектуру fork вместо prefork: каждому клиенту - по обслуживающему процессу (prefork подразумевает использование пула конечного числа дочерних процессов для обслуживания клиентов). Тем не менее, работа была успешно защищена.