LINUX.ORG.RU

Встраиваемый HTTP-сервер на C

 , ,


0

4

Поделитесь, чем пользуетесь, если нужно встроить HTTP-сервер в проект на чистом C. Почему выбрали именно одно решение, а не другое?

Сам пользуюсь libmicrohttpd (хотя API у него, ИМХО, не фонтан), но посматриваю в сторону mongoose.

Смотря какая архитектура, и сколько ресурсов. Для себя выбрал nginx + mod_lua, хватает с головой :)

joy4eg ★★★★★
()

wt++ тоже ниче так. но он на бусте.

MikeDM ★★★★★
()
Ответ на: комментарий от Eddy_Em

А там такая специфика, что или для nginx'а модуль писать, или прослойку между СХД и HTTP :). Пока успешно работает второй вариант.

post-factum ★★★★★
() автор топика
Последнее исправление: post-factum (всего исправлений: 1)
Ответ на: комментарий от post-factum

x86

для nginx'а модуль писать

А зойчем ? тот же lua идеально подойдет, из него же можно очень легко дергать сишный апи.

joy4eg ★★★★★
()

Поделитесь, чем пользуетесь, если нужно встроить HTTP-сервер в проект на чистом C.

Предпочитаю дергать куски на С из чего-нибудь маленького высокоуровневого и имеющего приличную интеграцию с http и db.

С - как клеевой язык неудобен.

anonymous
()

Прямо мрак и стыд какой-то с HTTP серверами для С или С++. Куда ни глянь - GPL. Они там мозолей обожрались? Как можно пользоваться лицензией ограничивающей свободу?

vertexua ★★★★★
()
Ответ на: комментарий от unt1tled

tinyhttpd is a relatively simple webserver I wrote for a school project.

tinyhttpd is a very simple webserver. It is not for production use; instead it is primarily for a learning tool

Этот? Ну не.

post-factum ★★★★★
() автор топика

darkhttpd ещё покромсать ещё можно. Я когда то post-запрос и его обработчик туда костылил.

sergej ★★★★★
()
Ответ на: комментарий от sergej

Event loop, single threaded - no fork() or pthreads.

Ну тоже не.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от post-factum

Тебеж простой надо было? Этот можно взять и до(пере)пилить, если что нетак. А так, обычный слушатель 80 и даже с многопоточностью и cgi.

unt1tled ★★★★
()

очень сильно переделанный mongoose, потому-что два файла

anonymous
()
Ответ на: комментарий от unt1tled

Да стрёмно полагаться на школьный проект в продакшне.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от vertexua

Пофигу, мне с гластера читать надо =).

post-factum ★★★★★
() автор топика
Ответ на: комментарий от vertexua

Блин, вот так всегда

A note on compatibility: this project relies on system installed fbthrift and folly.

Еще говноthriftа не хватало. Какое же оно падучее сегфолтами

vertexua ★★★★★
()

Использую libevhtp, правда нужды не особо страшные - отдать статическую страничку и дать REST-api для конфигурирования демона. Однозначно сыроват пока (хотя для моих нужд хватает), но автор один из активных разработчиков libevent, и где-то были обещания, что как только оно подрастёт, то заменит собой http интерфейс libevent.

Если надо поштабильнее, то можно попробовать тот самый libevent, правда на нём решение может выйти неудобным и многословным (https://github.com/libevent/libevent/blob/master/sample/http-server.c).

Reinar
()
Ответ на: комментарий от Reinar

А вообще, если нету специфичных требований (если это не админка для встраиваемой системы, например), то лучше написать FastCGI-сервер и использовать с любым понравившимся веб-сервером.

Reinar
()
Ответ на: комментарий от vertexua

Поправка: для библиотек. Для самостоятельного софта можно GPL

vertexua ★★★★★
()
Ответ на: комментарий от stevejobs

Вот тебе 1000 рублей говорит прохожий бомжу.
Чё, нахрен мне твои 1000 рублей? Давай 1000 баксов,
не ну посмотрите на него и чего я буду с этими копейками делать?
Сказал бомж. И был от души послан нахуй прохожим.

Dron ★★★★★
()
Последнее исправление: Dron (всего исправлений: 2)

Оссспади. Если ты не знаешь как написать, то как ты будешь поддерживать это? Возьми что-нибудь такое http://thenewstack.io/make-a-restful-json-api-go примотай туда сишную либу и не парься. По крайней мере те самые «мелочи», которые прибавляют гемор в этих пакетах уже решены, коммьюнити живое. А вообще прямо в репе boost::asio лежит несколько примеров нормальных асинхронных http серверов. Привяжи к ним свой бэкенд и иди пить пиво.

ioway
()
Ответ на: комментарий от vertexua

Не спорю что они нормальные. Просто дарёному коню в зубы не смотрят. Иначе своего коня растить надо. Ну, а если кто жеребца конечно подгонит породистого конечно грех отказываться, но как ты сам сказал маловато кто просто так их раздаёт.

Dron ★★★★★
()
Последнее исправление: Dron (всего исправлений: 1)
Ответ на: комментарий от ioway

А вообще прямо в репе boost::asio лежит несколько примеров нормальных асинхронных http серверов

Это не «нормальный асинхронный http-сервер», а пример для демонстрации возможностей asio. Ровно с таким же успехом можно велосипедить сервер самому.

Reinar
()
Ответ на: комментарий от Dron

продукты на основе GPL в своем коде вообще никак нельзя использовать, потому что тогда твой код станет с открытыми исходниками и станет приносить 0$ вместо 1000 за коробку.

Давай я заберу у тебя 1000 баксов говорит прохожий президенту.
Чё, нахрен мне тебе отдавать 1000 баксов? Давай лучше ты на меня будешь работать и по 1000 баксов каждый месяц приносить,
не ну посмотрите на него еще я не платил каждому встречному?
Сказал президент. И прохожий был выпнут из страны к чертям собачьим, и визу ему не дадут уже никогда.

stevejobs ★★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.