Здравствуйте, silart, Вы писали:
S>Добрый день!
S>Нужно сделать асинхронный http сервер. Есть хандлер:
а что, эта библа уже наконец допилена до состояния, когда ее собственные примеры компилятся? %)
я смотрел на нее, честно признаюсь, пару лет назад, последний раз... все было далеко от production применения...
S>Нужно получить: authority, path, query и fragment
в ней есть класс uri -- это все просто его gettеры... в одном проекте я использовал его отдельно от этой библы
S>Кажется должно быть все просто, но примеров очень мало.
ЗЫ. я бы не стал связываться с этой библой (тем более, что примеров все еще мало)...
Здравствуйте, zaufi, Вы писали:
Z>ЗЫ. я бы не стал связываться с этой библой (тем более, что примеров все еще мало)...
Полностью согласен, еще только добавлю что использовать класс uri из нее тоже нужно с оглядкой. Для разбора на составляющие в uri используется парсер (на Boost.Spirit) который ожидает что строка URI закодирована по RFC, т.е. никаких non-ASCII символов нигде не должно быть. И функции для кодирования строки (например из UTF-8) в RFC 3987 я в библиотеке не обнаружил.
Ого! Вы меня расстроили ребята. А так вроде все красиво выглядит. Примеры что есть собираются. Я даже слабал небольшой асинхронный сервер. Но вот достучаться до query что-то не смог, хоть и есть класс uri. Там с request'ами замут какой-то. Они частично специализируются в зависимости от тэгов, я так и не понял для чего все это.
Может тогда посоветуете какую либу можно использовать для подобных целей? Ну чтобы сделать асинхронный http сервер на С++. Я сам раньше с http опыта не имел.
Здравствуйте, silart, Вы писали:
S>Может тогда посоветуете какую либу можно использовать для подобных целей? Ну чтобы сделать асинхронный http сервер на С++. Я сам раньше с http опыта не имел.
Зависит от требований к серверу, существующие бибилиотеки для работы с HTTP — конструктор из серии "сделай сам". Если удалось собрать cpp-netlib, значит в проекте нет проблем с использованием Boost и более-менее свежего компилятора.
В разное время в разных проектах я смотрел:
Примеры HTTP серверов из Boost.Asio — разве что только как источник идей, доделывать придется много. POCO — на вид вроде бы всё есть; на мой взгляд альтернатива Boost, поэтому в одном проекте с Boost использовать не стал. Pion — построена поверх Boost.Asio, использую сейчас для раздачи статических файлов и Websockets. Casablanca — может быть попробую в следующем проекте.
Здравствуйте, silart, Вы писали:
S>Может тогда посоветуете какую либу можно использовать для подобных целей? Ну чтобы сделать асинхронный http сервер на С++. Я сам раньше с http опыта не имел.
PM> Примеры HTTP серверов из Boost.Asio — разве что только как источник идей, доделывать придется много. PM> POCO — на вид вроде бы всё есть; на мой взгляд альтернатива Boost, поэтому в одном проекте с Boost использовать не стал. PM> Pion — построена поверх Boost.Asio, использую сейчас для раздачи статических файлов и Websockets. PM> Casablanca — может быть попробую в следующем проекте. PM>
Очень интересен Pion Network Library. Основан на boost asio, что для меня является плюсом. Однако документации я что-то не нашел. Может плохо искал? В архиве конечно идет доксигеновская документация. Но хотелось бы с примерами.
Нашел вот этот блог, но там только Hello World.
Здравствуйте, silart, Вы писали:
S>Очень интересен Pion Network Library. Основан на boost asio, что для меня является плюсом. Однако документации я что-то не нашел. Может плохо искал? В архиве конечно идет доксигеновская документация. Но хотелось бы с примерами.
Не знаю, я и доксигеновскую не читал, сразу код смотрел при необходимости. Но вот ничего для работы с URL в Pion нет Пришлось писать свой велосипед, который кстати планирую заменить на реализацию из Urdl
S>Нашел вот этот блог, но там только Hello World.
Там немног устаревшие примеры, в Pion версии 5.0 слегка поменяли API (сделали имена классов в нижнем регистре)
S>>Может тогда посоветуете какую либу можно использовать для подобных целей? Ну чтобы сделать асинхронный http сервер на С++. Я сам раньше с http опыта не имел.
PPA>Я выбрал себе https://github.com/cesanta/mongoose PPA>в примерах все доступно и просто.
В примерах — да.
Реально — есть проблемы. PPA>и по тестам он оказался хорош: http://habrahabr.ru/post/207460
Тест ни о чём.
Здравствуйте, dr. Acula, Вы писали: PPA>>Я выбрал себе https://github.com/cesanta/mongoose PPA>>в примерах все доступно и просто. DA>В примерах — да. DA>Реально — есть проблемы.
А расскажите какого плана проблемы — падает/течет/тормозит?
не умеет что-то делать?