Приветствую Вас, Гость · RSS Четверг, 25.04.2024, 10:38








Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » 2008 » Май » 7 » СЕрвер
СЕрвер
16:33
В данной статье мы рассмотрим способ создания простейшего Web-сервера. Точнее, HTTP-сервера, работающего как Web-сервер. Примерами могут служить такие распространенные Web-сервера как IIS, Apache и т.д. Наш сервер будет выполнять конкретные функции вроде формирования HTTP- страницы на основе базе данных, а системное приложение, обрабатывающее HTTP-запросы из любых клиентских программ, поддерживающих HTTP-протокол, и возвращающее им HTML-страницы для просмотра и отображения.

Создадим новую форму и разместим на ней компонент TidHTTPServer(вкладка Indy servers). В свойстве Bindings укажем IP- адрес, выбираем All, а порт стандартный 80,  В обработчике события OnCommandGet, которое возникает, когда к серверу поступает запрос от клиентского приложения, например от обычного браузера, пишем:

procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
idhttpserver1.ServeFile(Athread, AResponseInfo, 'C:\www\root'+ARequestInfo.Document);
end;

Параметр 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-сервер работает.
Категория: Delphi | Просмотров: 1153 | Добавил: windog | Рейтинг: 0.0/0 |
Всего комментариев: 3
1 Puteshestvennik  
smile

2 Restan  
smile

3 BiT  
Здравствуйте, столкнулся с проблемой в компоненте IdHTTPServer (indy 10) при попытки скачать файл с расширениями rar,exe и т.п. Получается, что браузер открывает эти файлы, а не качает что делать?

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]