Это небольшой веб -сервер, написанный на C, который поддерживает подмножество спецификаций HTTP 1.0. Сервер;
• Должен иметь возможность обрабатывать одновременные запросы
• Реализовать методы HTTP
• Обработайте и отвечайте на неверные запросы.
Вы должны быть в состоянии продемонстрировать, что ваш веб -сервер может доставить вашу домашнюю страницу в веб -браузер. Вы должны реализовать версию 1.0 HTTP, как определено в RFC 1945, где отдельные HTTP -запросы отправляются для каждого компонента веб -страницы. Сервер сможет обрабатывать несколько одновременных запросов на обслуживание параллельно. Это означает, что веб-сервер многопоточный. В основном потоке сервер прислушивается к фиксированному порту. Когда он получает запрос на соединение TCP, он устанавливает соединение TCP через другой порт и обслуживает запрос в отдельном потоке.
Чтобы упростить эту задачу программирования, мы разработаем код через два этапа. На первом этапе вы можете написать многопоточный сервер, который просто отображает содержимое сообщения HTTP-запроса, которое он получает. После того, как эта программа работает должным образом, вы можете добавить код, необходимый для создания соответствующего ответа.
Когда вы разрабатываете код, вы можете проверить свой сервер из веб -браузера, такого как Chrome, Safari, Firefox Web Browser в качестве клиентского приложения HTTP. Но помните, что вы не обслуживаете стандартный порт 80, поэтому вам необходимо указать номер порта в URL, который вы даете своему браузере. Например, если имя вашей машины - testhost.mydomain.com, ваш сервер прослушивает порт 6789, и вы хотите получить файл index.html, то вы указали бы следующий URL в браузере: http: // testhost.mydomain.com:6789/index.html
Если вы опустите ": 6789", браузер предполагает порт 80, который, скорее всего, не будет слушать сервер.
Когда сервер встречается с ошибкой, он отправляет ответное сообщение с соответствующим источником HTML, чтобы информация об ошибке отображалась в окне браузера.
Общие требования:
• Будет использоваться библиотека POSIX (Pthread).
• Сервер требует слишком много запросов, но он может вернуть ответ только 10 запросов. Более 10 запросов отказано. В этом состоянии сервер возвращает сообщение «Сервер занят»
• Сервер принимает запросы, которые будут файлами HTML и JPEG. Другие типы не будут принимать