Мені потрібно створити простий сервер HTTP в C. Будь-які вказівки? Посилання? Зразки?
Мені потрібно створити простий сервер HTTP в C. Будь-які вказівки? Посилання? Зразки?
Відповіді:
Я пропоную вам поглянути на крихітний httpd . Якщо ви хочете написати це з нуля, тоді ви захочете ретельно прочитати RFC 2616 . Використовуйте розетки BSD для доступу до мережі на дуже низькому рівні.
tiny httpd
також на Github тут: github.com/larryhe/tinyhttpd
Рекомендую поглянути на: Практичний посібник із написання клієнтів та серверів
Що вам належить реалізувати поступово:
HTTP-сервер концептуально простий:
Це стає складніше залежно від того, скільки HTTP ви хочете підтримувати - POST трохи складніше, сценарії, обробка декількох запитів тощо.
Але основа дуже проста.
Мангуст (раніше простий HTTP-демон) досить непоганий. Зокрема, він вбудовується та компілюється під Windows, Windows CE та UNIX.
Відкрийте розетку TCP на порту 80, починайте слухати нові з'єднання, реалізуйте це . Залежно від ваших цілей, ви можете ігнорувати майже все. У найпростішому випадку ви можете надіслати однакову відповідь на кожен запит, що включає лише написання тексту в сокет.
Подивіться на nweb (Веб-сервер Найджела), "крихітний, безпечний веб-сервер [...], що містить лише 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, безпечна для потоків і знаходиться в C ++ для UNIX.
Ви повинні мати можливість виділити його та використовувати код, сумісний із C.
HTTP специфікації і Firebug були дуже корисні для мене , коли я повинен був зробити це для моєї домашньої роботи .
Успіхів вам. :)
Я б запропонував подивитися джерело на щось на зразок lighthttpd .
http://www.manning.com/hethmon/ - "Ілюстрований посібник з HTTP Пола С. Хетмона" від Manning - це дуже хороша книга для вивчення протоколу HTTP і буде дуже корисною для тих, хто її реалізує / розширює.
Є дублікат з більшою кількістю відповідей .
Один із кандидатів, про які ще не було сказано, - це сервер .