Сервер можно довольно просто написать на Boost.Asio, но оказалось все уже изобретено - хорошо подошла cpp-netlib, вот пример кода сервера из документации:
struct hello_world;
typedef http::serverserver;
struct hello_world {
void operator() (server::request const &request,
server::response &response) {
response = server::response::stock_reply(
server::response::ok, "Hello, World!");
}
void log(...) {
// do nothing
}
};
hello_world handler;
http::serverserver_("0.0.0.0", "80", handler);
server_.run();
Библиотека, правда, довольно сырая - пришлось немного допиливать напильником чтобы скомпилировалась под VC++10. Но зато в комплекте идут приятные бонусы типа url_decode, которые вполне пригодились.
PS. Забавно было когда сделал и запустил простейший сервер - FireFox грузил http://localhost/ очень долго, дольше чем http://www.yandex.ru/. Я уж было стал грешить на cpp-netlib и boost.asio, но оказалось IE открывал localhost мгновенно. Как я понял, FF долго ресолвит адрес localhost (причем каждый раз видимо заново), а http://127.0.0.1/ открывает мгновенно.
3 комментария:
Ещё есть библиотечка Wt из, скажем так, смежной области применения :) Всё хочу о ней статью написать. Пожалуй, сделаю это в ближайшее время.
Доброго времени суток! :-)
Долго проект с Netlib компилируется? У меня беда - минут по 5 и то в итоге с ошибками переполнения кучи компилятора.
Как с этим бороться? Что "подпиливали"? :)
Давно уже есть версия 0.8
http://cpp-netlib.blogspot.com/
Автор на sf.net не публикует уже исходники давно похоже.
Отправить комментарий