В данной статье мы рассмотрим способ создания простейшего Web-сервера. Точнее, HTTP-сервера, работающего как Web-сервер. Примерами могут служить такие распространенные Web-сервера как IIS, Apache и т.д. Наш сервер будет выполнять конкретные функции вроде формирования HTTP- страницы на основе базе данных, а системное приложение, обрабатывающее HTTP-запросы из любых клиентских программ, поддерживающих HTTP-протокол, и возвращающее им HTML-страницы для просмотра и отображения.
Создадим новую форму и разместим на ней компонент TidHTTPServer(вкладка Indy servers). В свойстве Bindings укажем IP- адрес, выбираем All, а порт стандартный 80, В обработчике события OnCommandGet, которое возникает, когда к серверу поступает запрос от клиентского приложения, например от обычного браузера, пишем:
Параметр AThread имеет тип TidPeerThread, оно характеризует соединение с клиентской программой. Параметр ARequestInfo определяет характеристики запроса, а параметр AResponceInfo характеристики ответа сервера.
Все, что требуется от создаваемого нами приложения – это отправить запрошенный HTTP-файл клиенту, что и выполняется с помощью метода ServeFile. Первый в нем – это объект, описывающий данное соединение (AThread). Второй параметр – информация об ответе сервера (она передается в оригинальном виде без изменений), а третий параметр – полный путь к запрошенному файлу. Этот путь очевидно, проходит через каталоги компьютера, локального для HTTP-сервера. Такие каталоги пользователю браузера (или любой другой программы, клиентской по отношению к HTTP-серверу) не видны и не доступны.
Бросим на форму еще одну кнопку и при щелчке напишем:
procedure TForm1.Button1Click(Sender: TObject); begin IdHTTPServer1.Active:=True; end;
В этот строчке мы переводим объект в активное состояние, то есть запускаем наш сервер. Следует помнить, что на вашей машине был свободен 80 порт, если у вас установлен Denwer, TopServer, Apache, IIS или подобные серверы нужно отключить, а то вызывается исключительное ситуация EidCoulNotBindSocket.
Теперь программу можно откомпилировать и запустить, а в соответствующий каталог (c:\www\root\) (создаем такие каталоги, если у вас нет), создаем и бросаем туда простой HTML файл с содержанием:
<html> <head> <title> Our Main Page!!! </title> </head> <body> <center><h1> Это главная страница моего Web- сервера!!!! </center> </body> </html>
Сохраняем под именем index.html. Теперь можно обратиться к нашему серверу через браузер, наш HTTP-сервер должен быть запущен. На браузере набираем http://127.0.0.1/index.html Если вы увидели надпись Это главная страница моего Web- сервера!!!, то наш простой web-сервер работает.
Здравствуйте, столкнулся с проблемой в компоненте IdHTTPServer (indy 10) при попытки скачать файл с расширениями rar,exe и т.п. Получается, что браузер открывает эти файлы, а не качает что делать?
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]