Small HTTP сервер
Как ...?
-- Да очень просто -- распаковывайте с сохранением дерева
каталогов, запускайте srv.exe и все ! Если Ваш браузер не
настроен на работу через прокси, то даже не входя в сеть вы
можете сами сходить на свой сайт используя стандартный
IP-адрес http://127.0.0.1/.
Если у вас нет собственного DNS-имени, это не страшно. Любой пользователь
может попасть ваш сайт используя Ваш IP адрес. Указывайте его при
регистрации на поисковых серверах.
Коталоги и имена файлов.
Сервер поддерживает определенные имена каталогов.
Так Ваш сайт начинается с подкаталога WWW. Файлы могут
передаваться только из этого каталога и из всех вложенных в
него каталогов, кроме WWW/CGI-BIN/ Предполагается, что в
каталоге WWW/CGI-BIN/ находятся исполняемые CGI-скрипты, и при
получении запроса на файл из WWW/CGI-BIN/ сервер пытается его
запустить. При этом если файл имеет расширение *.pl то
запускается Perl-интерпретатор, который должен быть либо в
PATH-е, либо в том же каталоге, что и сервер.
Например если Вы распаковали программу в каталог С:\HTTP то
по вашему IP-адресу можно будет забирать файлы из каталога
C:\HTTP\WWW т.е.
http://127.0.0.1/test.htm==C:\HTTP\WWW\test.htm. А CGI в этом
случае запускаются из C:\HTTP\WWW\CGI-BIN\
Если Вы создали в каталоге WWW подкаталог WWW\IMAGES и
записали туда файл bgr.gif
то получить его можно http://127.0.0.1/images/bgr.gif и т.д.
В любом случае, если имя файла не задано, т.е. запрос
кончается на '/' то сервер автоматически подставляет index.htm
сохраняя структуру каталогов. Так http://127.0.0.1/My/
эквивалентно http://127.0.0.1/My/index.htm
Сервер определяет
тип файла по расширению. Поддерживаются следующие типы:
*.htm,*.html - text/html
*.txt - text/plain
*.gif - image/gif
*.jpg,jpeg - image/jpeg
Во всех остальных случаях сервер возвращает */* на, что браузер
клиента как правило предлагает сохранить файл на диске.
Запуск скриптов.
Как уже говорилось, скрипты запускаются из поддиректории WWW/CGI-BIN/
При этом поддерживается интерфейс CGI/1.0 подробное описание которого
можно найти например на
http://Web.Golux.Com/coar/cgi/
При запуске строка запроса передается как в командной строке так и в переменной
окружения QUERY_STRING. После запуска выходной поток скрипта напрямую
транслируется пользователю приславшему запрос. Скрипт, обязательно
должен выдавать строку Content-Type: тип\r\n.Также могут следовать
другие служебные строки, например Content-Length: xx\r\n или Date:
Завершается служебная информация последовательностью
\r\n\r\n. Если вы пишите на Си или Перле то обратите внимание
на то, что функции вывода в тестовом режиме сами преобразуют
символ \n в последовательность \r\n. На Паскале функция writeln
завершает вывод этими символами.