Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: 6323
Последний выпуск: 19.06.2015

Написание Web-сервера под Linux на С/С++

81K
27 марта 2012 года
vsp1983
3 / / 27.03.2012
Добрый день.

Появилась необходимость создать Web-сервер как тестовое задание для принятия на проект.
Ранее я писал что-то подобное, но под WIndows(C#+JavaScript/jQuery+ASP.NET), но теперь меня перебросили на Юниксовый проект и дали тестовое задание. Что-то из реализации частично я нашел в книге "Марк Митчелл и др., Программирование для Linux. Профессиональный подход", но чтобы реализовать полный функционал, этого не достаточно.

Может какая есть литература, где был бы подробно описан процесс создания такого Web-сервера? Или кто-то может сталкивался с подобной задачей?
Весьма буду благодарен любой помощи.


Задание: Написать web-сервер под Linux
Язык: C++.
Причем сроки были даны: от 1 дня до 1 недели в зависимости от опыта работы и квалификации.

Детали реализации:
- Сервер висит на непривилегированном порту (например, 8080).
- При обращении броузером на http://localhost:8080/ должен выдаваться
листинг коревого каталога (/). При обращении к
http://localhost:8080/etc/ выводится листинг каталога /etc, и т.п.
- Все файлы и каталоги в листинге должны быть ссылками.
- Листинг должен быть отсортирован в алфавитном порядке,
причём каталоги в листинге должны предшествовать файлам.
- При обращении к любому файлу используется content type text/plain,
чтобы содержимое файлов можно было просматривать в броузере.
- Запросы должны обрабатываться сервером в многопоточном режиме,
причём [максимальное] количество потоков должно быть ограничено.
- Сервер должен поддерживать режим демона.
- Все сообщения, который сервер выводит после демонизации, должны
выводиться в лог (syslog или лог-файл -- на выбор).
- Достаточно поддержки HTTP/1.0.
- В случае ошибки сервер должен возвращать подходящий HTTP status code.
- Возможные ошибки должны обрабатываться.
- К программе должен прилагаться Makefile для сборки.

Первое, что интересует: обработка перехода по ссылкам.
Особенно интересует вопрос вывода в браузере листинга каталогов и файлов ввиде гиперссылок и организация обработки прохода клиентом по дереву каталогов.
Можно ли обойтись здесь без PHP-скриптов(нашел просто примеры реализации вывода дерева каталогов в браузере).
316
27 марта 2012 года
Alm3n
889 / / 29.05.2009
Я не могу полностью ответить на Ваш вопрос, т.к. не знаком более обширно с темой, но хочется знать, на какие-нибудь библиотеки Вам не намекали? Просто, по той информации, что имеется у меня по сокетам, парсерам, потокам и прочему, из чего можно было бы составить Ваш сервер, мог бы сказать, что за одну неделю такое написать и отладить мне не представляется возможным без библиотек, реализующих в приложение какое-то поведение сервера, хотя тут просто опыта, наверное, не хватает.
245
28 марта 2012 года
~ArchimeD~
1.4K / / 24.07.2006
Я тоже не вполне вкурил в суть и специфику вопроса.
Если можно использовать, например, boost::filesystem, то особых сложностей по файловой системе не вижу.
Итератором проходим по директории, отдаем клиенту ответ в виде

 
Код:
<p><a href="http://localhost:8080/etc/">etc</a></p>
не то?
81K
28 марта 2012 года
vsp1983
3 / / 27.03.2012
Цитата: ~ArchimeD~
Я тоже не вполне вкурил в суть и специфику вопроса.
Если можно использовать, например, boost::filesystem, то особых сложностей по файловой системе не вижу.
Итератором проходим по директории, отдаем клиенту ответ в виде

 
Код:
<p><a href="http://localhost:8080/etc/">etc</a></p>
не то?



Это пока самое первое и единственное, что и мне пришло в голову.

1
28 марта 2012 года
kot_
7.3K / / 20.01.2000
не знаю как для тестового задания - но как бы задача в принципе не слишком сложная. Можно с бустом, можно и самому. И я совсем не понял причем тут пхп? Задачи ведь обработки скриптов вроде как нет?
81K
28 марта 2012 года
vsp1983
3 / / 27.03.2012
Цитата: kot_
не знаю как для тестового задания - но как бы задача в принципе не слишком сложная. Можно с бустом, можно и самому. И я совсем не понял причем тут пхп? Задачи ведь обработки скриптов вроде как нет?


ПХП непричем - просто мысли вслух.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог