- •«Дальневосточный федеральный университет»
- •Школа естественных наук материалы практических занятий
- •Определение установок сетевого адаптера
- •2.3. Определение сетевого адреса и маски сети
- •Разграничение доступа к сетевым ресурсам
- •2.5. Проверка сетевого соединения в tcp/ip - сетях.
- •1. Теоретическое введение
- •Имена почтовых ящиков.
- •1.2. Сервер почтовых ящиков
- •1.3 Пример создания сервера почтовых ящиков
- •1.4. Клиент почтовых ящиков
- •1.5 Создания клиента почтовых ящиков
- •2. Задание по практическому занятию
- •2.1. Создание серверного приложения
- •1. Теоретическое введение
- •1.2. Процедуры и функции Win32 для работы с файлами
- •1.2.1. Создание или открытие файла
- •1.2.2. Запись в файл
- •1.2.3. Чтение из файла
- •1.2.4. Закрытие файла
- •1.3. Пример программы, использующей функции Win32 для доступа к файлам и каталогам
- •1.4. Функции Delphi для работы с файлами
- •1.4.1. Открытие и закрытие файла
- •1.4.2. Типы файлов
- •1.4.3. Обработка ошибок при работе с файлами в Delphi
- •1.5. Пример программы, использующей функции Delphi для доступа к файлам и каталогам
- •2. Задание по лабораторной работе
- •1. Теоретическое введение
- •Пример создания сервера именованных каналов, работающего в блокирующем режиме
- •Пример создания клиента именованных каналов
- •Задание по практическому занятию
- •Создание серверного приложения,
- •Создание клиентского приложения,
- •2.3. Расширение возможностей именованных каналов
- •1. Теоретическое введение
- •1.1. Особенности организации работы именованных
- •2. Задание по практическому занятию
- •2.1. Создание серверного приложения
- •2.2. Создание клиентского приложения
- •Занятие 6. Поиск доступных сетевых ресурсов
- •1. Теоретическое введение
- •Алгоритм поиска сетевых ресурсов
- •1.2. Структуры и функции для работы с сетевыми ресурсами
- •2.Задание по практическому занятию
- •1. Теоретическое введение
- •1.1. Назначение протокола NetBios
- •1.2. Назначение протокола NetBeui
- •2. Задание по практическому занятию
- •Занятие 8. СокетыWindows. Создание клиент-серверного приложения работающего по протоколуUdp
- •1. Теоретическое введние
- •1.1. Сокеты windows
- •1.2. Функции winsock для протокола udp
- •1.2.1. Инициализация интерфейса сокетов
- •1.2.2. Создание сокета
- •1.2.3. Определение номера порта и ip-адреса, по которому сервер будет принимать данные
- •1.2.4. Передача данных
- •2. Задание по практическому занятию
- •2.2. Создание клиентского приложения
- •2.3. Реализация возможностей функций Winsock по передаче данных между различными компьютерами в сети
- •Занятие 9. Исследование возможностей использования сокетов windows для организации обмена информацией между клиентом и сервером по протоколу тср
- •1. Теоретическое введение
- •1.1. Функции Winsock для протокола tcp
- •1.1.1. Установление соединения
- •1.1.3. Блокирование выполнения программы до тех пор, пока не поступит запрос на установление соединения
- •1.1.4. Передача данных
- •1.1.5. Получение данных по сети
- •1.2. Алгоритм работы Winsock- приложения по протоколу tcp
- •2. Задание по лабораторной работе
- •2.1. Создание серверного приложения
- •2.2. Создание клиентского приложения
- •2.3. Исследование возможностей функций Winsock по передаче данных между различными компьютерами в сети
- •Занятие 10. Исследование методов сканирования сети
- •1. Теоретическое введение
- •2.1. Создание многопоточного приложения для сканирования сети
- •2.2. Исследование различных методов сканирования сети
- •Занятие 11. Применение сокетного соединения для обеспечения сетевого взаимодействия клиента и сервера
- •1. Теоретическое введение
- •1.1. Компоненты Delphi, инкапсулирующие сокеты
- •1.2. Компоненты Delphi tcpserver и tcpcl1ent
- •1.2.1. Установление соединения
- •1.2.2. Синхронизация сокетов
- •1.2.3. Класс TserverWinsocket
- •1.2.4. Компонент TserverSocket
- •1.2.5. Класс tClientWinsocket
- •1.2.6. Компонент tClientSocket
- •2. Задание по практическому занятию
- •2.1. Создание серверного приложения
- •2.2. Создание клиентского приложения
- •1. Задание по лабораторной работе
- •1.1. Создание серверного приложения
- •1.2. Создание клиентского приложения
- •1.3. Исследование возможностей сервер-приложения
- •1. Теоретическое введение
- •2. Задание по практическому занятию
- •Занятие 14. Исследование возможностей поддержки протокола тср
- •1. Теоретическое введение
- •1.1. Методы indy-компонента- IdTcpClient
- •1.2. Методы indy-компонента - IdTcpServer
- •2. Задание по лабораторной работе
- •2.1. Создание серверного приложения
- •2.2. Создание клиентского приложения
- •Занятие 15. Программирование клиентских приложений для работы с серверами internet
- •1. Теоретическое введение
- •Библиотека WinInet
- •1.2. Функции библиотеки wininet
- •1.2.1. Функция создания сеанса связи InternetOpen
- •1.2.2. Функция установления url-соединения InternetOpenUrl
- •1.2.3. Функция чтения файла, находящегося на web-cepвepe InternetReadFile
- •1.2.4. Функция закрытия дескриптора – InternetCloscHandle
- •1.2.5. Функция установления соединения InternetConnect
- •1.2.6. Функция «Найти первое вхождение файла с указанным групповым именем» FtpFindFirstFile
- •1.2.7. Функция «Найти следующие вхождения файла с указанным групповым именем» InternetFindNextFile
- •1.2.8. Функция «Получить имя текущего Каталога на ftp-сервере» -FtpGetCurrentDirectory
- •1.2.9. Функция чтения файла с http-сервера FtpGetFile
- •2. Задание по практическому занятию
- •2.1. Создание клиентского приложения.
- •Занятие 16. Приём и передача файлов по сети с использованием протокола tftp
- •1. Теоретическое введение
- •1.1. Протокол tftp
- •1.2. Компонент- idTrivialFtp
- •Компонент IdTrivialFtpServer
- •2. Задание по практическому занятию
- •2.1. Создание серверного приложения
- •2.2. Создание клиентского приложения
- •Занятие 17. Создание http- клиента
- •1. Теоретическое введение
- •1.1. Свойства и методы компонента IdHttp
- •1.1.1. Метод get
- •1.1.2. Метод trace
- •1.1.3. Метод put
- •2. Задание по практическому занятию
- •2.1. Создание http-клиента
- •4. Как изменить приложение таким образом, чтобы файл с сервера записывался не в поле Memo, а в какой-либо файл на компьютере клиента? Каким должен быть тип переменной s в данном случае?
- •Тексты заданий самостоятельной работы задание № 1 создание web-браузера
- •1. Теоретическое введение
- •2. Задание по практическому занятию
- •Задание № 2 исследование telnet-клиента
- •1. Теоретическое введение
- •2. Задание по практическому занятию
- •2.1. Создание приложения Telnet-клиента
- •2.2. Исследование Telnet-клиента
- •Задание №3 разработка cgi-программ
- •1. Теоретическое введение
- •1.1. Принцип работы cgi-программ
- •1.2. Описание тега form
- •1.2.1. Тег input
- •1.2.2. Тег select
- •1.2.3. Тег textarea
- •13. Подтверждение и посылка запроса cgi-программе
- •2. Задание по практическому занятию
- •2.1. Создание простейшего серверного приложения
- •2.2. Передача cgi-приложению параметров, введенных пользователем, и получение дополнительной информации из переменных окружения
- •Задание № 4 разработка web-приложения
- •1. Теоретическое введение
- •1.1. Общее описание компонента twebmodule
- •1.2. Параметр request
- •1.3. Параметр response
- •1.4. События twebmodule
- •2. Задание по практическому занятию
- •2.1. Создание web-приложения с помощью компонента Delphi -webmodule
1.3. Параметр response
Параметр Response является экземпляр класса TWeb Response - базового класса, предназначенного для формирования ответа на HTTP-запрос. Основные свойства данного класса:
Property ContentType: String тип данных, содержащих в теле ответа;
Property ContentLength: Integer – число символов, содержащихся в теле ответа;
Properly Content: String - содержимое тела ответа;
Property ContentStream: TStream - определяет объект TStream, который будет передан клиенту. Данное свойство обычно используется для передачи клиенту бинарных файлов.
1.4. События twebmodule
Для выполнения обработки запросов и изменения содержимого ответа можно использовать действия, задаваемые в свойстве Actions, а также события самого компонента TWebModule. В этом компоненте предусмотрена возможность обработки четырех событий: AfterDispatch, BeforeDispatch, OnCreate и OnDestroy.
Описание данных событий:
AfterDispatch: THTTPMethodEvent - вызывается после того, как HTTP-ответ был успешно сформирован (в обработчике OnActions какого-либо действия из списка Actions), но еще не передан клиенту;
BeforeDispatch: THTTPMethodEvent - вызывается перед тем, как диспетчер устанавливает соответствие HTTP-запроса с каким-либо действием. Может использоваться для предварительной обработки HTTP-запроса;
OnCreate: TNotifyEvent - вызывается при создании экземпляра TWebModule. Данное событие обычно вызывается для инициализации переменных и, объектов, содержащихся в приложении. Например, сайт модуль содержит базу данных, в обработчике этого события можно выполнить подключение базы данных;
OnDestroy: TNotifyEvent - вызывается перед уничтожением TWebModule. Обычно используется для освобождения объектов, созданных динамически. При использовании баз данных в обработчике данного события можно, например, разрывать соединение с базой данных.
2. Задание по практическому занятию
2.1. Создание web-приложения с помощью компонента Delphi -webmodule
Создайте Web-приложение, выполняющее проверку знаний таблицы умножения. Серверное приложение выполняет два действия:
первое - анализирует ответ клиента;
второе - создает основной документ HTML.
Для создания данного приложения выполните следующие действия.
Этап 1: создание нового Web-приложения.
1) Выберите в главном меню Delphi команду File/New, затем выберите е открывшемся окне диалога значок Web Server Application и щелкните на кнопке ОК.
2) В открывшемся окне диалога выберите необходимый тип приложения. В данном случае следует использовать вариант «CGI Stand-alone executable». В результате будет создано новое CGI-приложение, содержащее компонент TWebModule.
Этап 2: задание действий, выполняющих обработку запросов клиентов.
1) Выберите в инспекторе объектов компонент TWebModule и щелкните на кнопке с многоточием в поле ввода свойства Action этого компонента. При этом откроется окно редактора действий (рис. 1).
2) Создайте два новых действия. Для этого следует воспользоваться либо кнопками на панели инструментов редактора действий (кнопка Add New), либо командой Add контекстного меню редактора действий, которое открывается при щелчке правой кнопкой «мыши» в окне редактора действий.
Рис. 1
3) Запрограммируйте первое действие. Для этого в окне редактора действий (рис. 1) выберите первое действие. Установите свойство PahtInfo равным «/1». Это приведет к тому, что данное действие будет обрабатывать HTTP-запрос только в том случае, если при вызове CGI-программы после ее имени будет указана строка «/1», например: http://nts/tmp/mult.exe/l. Значение всех остальных параметров оставьте без изменения.
4) Задайте обработчик запроса первого действия. Для этого выберите в инспекторе объектов вкладку Events и дважды щелкните «мышью» в поле ввода события OnAction. Введите следующий программный код:
procedure TWebModule1 .WebModule1 WebAclionItem1 Action(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
VAR
Num1, num2, result: integer;
begin
num1 : StrToInt(Request.ContentFields.Values[‘num1']);
num2 : StrToInt(Request.ContentFields.Values['num2']);
result:= num1*num2;
If Request.ContentFields.Values['resuIt']=IntToStr(result)
then Response.Content :=
'<b> Поздравляю!!! </b><p> Вы прекрасно знаете таблицу умножения!'
else Response.Content :=
'Вы немного забыли таблицу умножения <р>'+
'<a href="http://myself/temp/mult.exe">'+
'<р> Попробуйте еще раз </а></р>';
Handled := True;
end;.
5) Запрограммируйте второе действие. Для второго действия свойство PathInfo оставьте пустым, а свойство Default установите равным True. Это означает, что по умолчанию будет вызываться данное действие. В обработчик OnAction второго действия запишите следующий программный код:
procedure TWebModule1.WebModule1 WebActionItem2Action(Sender:
TObject;
Request: TWebRequest; Response: TWebResponse: var Handled: Boolean);
Var
num1, num2: Word;
begin
Randomize;
Num1 := Random(8)+l;
num2 :=Random(8)+1;
Response.Content:='<html><head> <Title>Таблица умножения'+
'</title></head><body>'+
‘<h1 >Проверьте свое знание таблицы умножения</h1>';
Response.Content:= Response.Content+
'Запишите в окне, чему равно произведение,‘+
'и нажмите кнопку "Ответ"';
Response.Content := Response.Content+
‘<form method="POST” ‘+
'action="http://myself/temp/mult.exe/1 "<table>'+
'<table> <tr><td> <input type="text" name="num1" size=" 1"'+
!value='+IntToStr(num1)+ '></td><td> x'+
'<td> <input type="text" name="num2" size="1" value='+
IntToStr(num2)+'></td><td>='+
'<td> <input type="text" name="result" size="3"> </td>'+
'<td> <input type=”submit" name="post" value="Ответ">'+
'</td></tr><table></form>'+
‘<form method="POST"’+
'action="http://myself/temp/mult.exe">'+
'<p><input type="submit" value="Новые числа" ‘+
'name="New"></p></form></body></html>';
Handled :=True;
end;.
6) В результате вызова второго действия (действия по умолчанию) на экране появится HTML-страница, изображенная на рис. 2.
7) При нажатии на кнопку «Ответ» активизируется второе действие. Если пользователь ответил на вопрос правильно, на экране появится HTML-страница, изображенная на рис. 3, если - неправильно, то HTML-cграница, изображенная на рис. 4.
Этап 3: компиляция и выполнение приложения
1) Откомпилируйте приложение и запишите его в каталог Web-сервера, допускающий выполнение приложений.
2) Запустите Internet Explorer и в поле «Адрес» укажите URL данного приложение в виде: http://nts/tmp/mult.exe. Так как после имени программы не указано действие, то будет выполняться действие по умолчанию, а именно действие два.
ПРИМЕЧАНИЕ
При повторном открытии созданного приложения компонент TWebModule автоматически не загружается. Для его открытия надо выполнить пункт главного меню File/Open и в открывшемся диалоговом не выбрать созданный вами для этого приложения файл с расширением *.pas.
Рис. 2
Рис.
3
Рис. 4
ЛИТЕРАТУРА
1. Дарахвелидзе П. Г., Марков Е. П. Разработка Web-служб средствами Delphi. СПб., БХВ-Петербург, 2003. 672 с.
2. Киммел П. Создание приложений в Delphi /Пер. с англ. М., Издательский дом «Вильямс», 2003. 640 с.
3. Петров В. Н. Информационные системы. СПб. Питер, 2002. 688 с.
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Назовите основные свойства компонента TWebModule.
2. Как получить доступ к полученным данным с помощью компонента TWebModule?
3. Как передать данные с помощью компонента TWebModule?
4. Как задать действие по умолчанию?
