Создайте простой сервер HTTP в [закрытом] C

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

105
задан Ry- 12 September 2014 в 21:36
поделиться

11 ответов

Я предлагаю, чтобы Вы смотрели на крошечный httpd. Если Вы захотите записать его с нуля, то Вы захотите к полностью , читает RFC 2616 . Используйте сокеты BSD для доступа к сети на действительно низком уровне.

83
ответ дан Adam Rosenfield 24 November 2019 в 03:55
поделиться

Я рекомендовал бы смотреть на: А Практическое Руководство по Записи Клиентов и серверов

, Что необходимо реализовать на возрастающих шагах:

  1. Добираются, Ваше основное выполнение слоя сокетов TCP (послушайте на порте/портах, примите соединения клиента и отправьте/получите данные).
  2. Реализация буферизированный читатель так, чтобы можно было считать запросы одна строка (разграниченный CRLF) за один раз.
  3. Read самая первая строка. Проанализируйте метод, версию запроса и путь.
  4. парсинг заголовка Реализации для "Заголовка: оцените" синтаксис. Не забывайте разворачивать свернутые заголовки.
  5. Проверка метод запроса, тип контента и размер содержания, чтобы определить, как/если тело будет считано.
  6. декодирование Реализации на основе содержимого на типе контента.
  7. , Если Вы собираетесь поддерживать HTTP 1.1, вещи реализации как "100 Продолжаются", активная, разделенная на блоки передача.
  8. Добавляют устойчивость/меры безопасности как обнаружение неполных запросов, ограничивая макс. число клиентов и т.д.
  9. Термоусадочная пленка Ваш код и открытый исходный код это:)
117
ответ дан Ates Goral 24 November 2019 в 03:55
поделиться

Сервер HTTP концептуально прост:

  • Открытый порт 80 для слушания
  • , Когда контакт установлен, соберите немного информации (доберитесь главным образом - можно проигнорировать остальных на данный момент)
  • , Переводят запрос в запрос файла
  • , Открывают файл и плюются им назад в клиенте

, Это становится более трудным в зависимости от того, сколько из HTTP Вы хотите поддерживать - POST немного более сложен, сценарии, обрабатывая несколько запросов, и т.д.

, Но основа очень проста.

26
ответ дан Vallentin 24 November 2019 в 03:55
поделиться

Мангуста (Раньше Простой Демон HTTP) довольно хороша. В частности, это встраиваемо и компилирует в соответствии с Windows, Windows CE и UNIX.

25
ответ дан Salman von Abbas 24 November 2019 в 03:55
поделиться

Откройте сокет TCP на порте 80, начните прислушиваться к новым соединениям, реализуйте это . В зависимости от Ваших целей можно проигнорировать почти все. В самом легком можно отправить тот же ответ за каждым запросом, который просто включает текст записи к сокету.

12
ответ дан Eclipse 24 November 2019 в 03:55
поделиться

Я записал свое собственное, которое можно использовать. Эти работы имеют sqlite, ориентированы на многопотоковое исполнение и находятся в C++ для UNIX.

необходимо быть в состоянии выбрать его независимо и использовать совместимый код C.

http://code.google.com/p/mountain-cms/

5
ответ дан Daniel A. White 24 November 2019 в 03:55
поделиться

Я предложил бы смотреть на источник к чему-то как lighthttpd.

4
ответ дан warren 24 November 2019 в 03:55
поделиться

спецификация и Firebug HTTP была очень полезна для меня, когда я должен был сделать это для мой домашняя работа.

Удача с Вашим.:)

5
ответ дан Omer van Kloeten 24 November 2019 в 03:55
поделиться

http://www.manning.com/hethmon/ - "Проиллюстрированное Руководство по HTTP Paul S. Hethmon" от Manning является очень хорошей книгой для изучения протокола HTTP и будет очень полезен для кого-то реализующего его/, расширяющий его.

2
ответ дан anjanb 24 November 2019 в 03:55
поделиться

Используйте платформу определенные функции сокета для инкапсуляции протокола HTTP, точно так же, как парни позади , Apache сделал.

1
ответ дан arul 24 November 2019 в 03:55
поделиться

Существует дубликат с большим количеством ответов .

Один кандидат, который еще не упомянут, является spserver .

.
1
ответ дан 24 November 2019 в 03:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: