Ответ 1
Я предлагаю вам взглянуть на крошечный httpd. Если вы хотите написать его с нуля, вам нужно будет полностью прочитать RFC 2616. Используйте сокеты BSD для доступа к сети на действительно низком уровне.
Мне нужно создать простой HTTP-сервер в C. Любое руководство? Ссылки? Образцы?
Я предлагаю вам взглянуть на крошечный httpd. Если вы хотите написать его с нуля, вам нужно будет полностью прочитать RFC 2616. Используйте сокеты BSD для доступа к сети на действительно низком уровне.
Я бы рекомендовал вам взглянуть на: Практическое руководство по написанию клиентов и серверов
То, что вам нужно реализовать с помощью дополнительных шагов, это:
Mongoose (ранее простой HTTP-демон) довольно хорош. В частности, он встраивается и компилируется под Windows, Windows CE и UNIX.
HTTP-сервер концептуально прост:
Это становится сложнее в зависимости от того, сколько HTTP вы хотите поддерживать - POST немного сложнее, скрипты, обработка нескольких запросов и т.д.
Но база очень проста.
-Adam
Откройте TCP-порт на порту 80, начните прослушивание новых подключений, внесите этот. В зависимости от ваших целей вы можете игнорировать почти все. В самом простом случае вы можете отправить один и тот же ответ для каждого запроса, что просто связано с записью текста в сокет.
Посмотрите на nweb (Nigel Web Server), "крошечный безопасный веб-сервер [...] с только 200 строк исходного кода C":
https://drive.google.com/file/d/0B3msld7qnNOhN1NXaFIwSFU2Mjg/view?usp=sharing
http://www.ibm.com/developerworks/systems/library/es-nweb/
В статье представлены псевдокоды, пояснения и комментарии.
EDIT: ссылка IBM умерла. Я сохранил PDF файл веб-страницы на Google Диске. Вот загрузка кода:
https://drive.google.com/file/d/0B3msld7qnNOhSGZGdDJJMmY0VHM/view?usp=sharing
@ankushagarwal внесла несколько изменений и загрузил свою версию на GitHub: https://github.com/ankushagarwal/nweb
Я написал свое собственное, что вы можете использовать. Этот работает с sqlite, является потокобезопасным и находится в С++ для UNIX.
Вы должны быть в состоянии выделить его и использовать C-совместимый код.
HTTP spec и Firebug были очень полезны для мне, когда я должен был сделать это для моей домашней работы.
Удачи вам.:)
Я бы предложил посмотреть источник на что-то вроде lighthttpd.
http://www.manning.com/hethmon/ - "Иллюстрированное руководство по HTTP от Paul S. Hethmon" от Manning - очень хорошая книга для изучения протокола HTTP и будет очень полезен для тех, кто его реализует/расширяет.
Используйте функции сокетов для конкретных приложений, чтобы инкапсулировать протокол HTTP, как и парни, стоящие за Apache.
Существует дубликат с большим количеством ответов.
Один кандидат, еще не упомянутый, spserver.