Есть ли какие-нибудь простые / примеры управляемых событиями веб-серверов в C?
Есть много примеров веб-серверов, основанных на потоках, но я действительно не видел ничего, что дало бы хороший пример сервера, основанного на цикле событий (не очень сложного, например, lighttp и nginx).
Есть ли? Если нет, что я должен прочитать / посмотреть, чтобы помочь мне научиться делать сервер такого рода? (Это включает в себя асинхронный ввод-вывод в C и т. Д.)
Я уже понимаю основы того, как работает программирование на основе цикла событий, особенно в языках более высокого уровня, таких как Python, но мне нужно иметь возможность реализовать его на C.
3 ответа
Вот тот, который является частью источника TupleServer, который использует libevent.
Короче говоря, просто: libevent.org и пример: http://www.wangafu.net/~nickm/libevent-book/. До тех пор, пока вы получаете свою руку в libevent, это API, работающий с http, который evhttp не очень надежен, есть альтернатива на https://github.com/ellzey/libevhtp. И конечно libmicrohttpd работает просто отлично.
Не уверен, насколько полнофункциональным должен быть ваш сервер, но вот небольшой веб-сервер на основе C, который можно использовать в качестве отправной точки. Он разветвляет дочерний процесс для каждого соединения, поэтому его легко понять, но он не самый эффективный.