- •«Дальневосточный федеральный университет»
- •Школа естественных наук материалы практических занятий
- •Определение установок сетевого адаптера
- •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
2. Задание по практическому занятию
2.1. Создание простейшего серверного приложения
Разработайте консольное приложение. Для этого выполните следующие действия.
1) Выберите в главном меню Delphi команду File/ New, затем выберите в открывшемся окне хранилища объектов значок Console Application и щелкните на кнопке ОК.
ПРИМЕЧАНИЕ. Если в окне хранилища объектов отсутствует значок Console Application, то выберите значок Application, в главном меню Delphi выберите команду View/ Units и откройте файл проекта. Затем создайте шаблон консольного приложения, которой имеет следующий вид:
program Project 1;
{@APPTYPE CONSOLE}
uses
SysUtils:
Begin
// Здесь будет располагаться CGI-программа
end.
2) Введите следующий текст CGI-программы (вместо комментария):
// Заголовок ответа
Writeln('Content-Type:text/html');
//Пустая строка, которая отделяет заголовок от тела ответа
Writeln;
Writeln('<HTML>');
Writeln('<HEAD>');
Writeln('<TITLE-> Пример СGI-приложения-</TITLЕ>');
Writeln(‘</HEAD>');
Writeln('<BODY>');
Wrileln('<H2 ALIGN=CENTER> Hello, World! </H2>');
Writeln('</BODY>');
Writeln('</HTML');.
3) Откомпилируйте полученное приложение и запишите полученный исполняемый файл в каталог Web-сервера, предназначенный для размещения исполняемых файлов и сценариев.
4) Для полученного приложения необходимо создать HTML-документ, из которого будет производиться вызов CGI-приложения. Так как в данном случае не требуется получать какие-либо данные от пользователя, то можно использовать вызов приложения с помощью тега «FORM» и как обычную ссылку (тег «А HREF=...»). Создайте следующий HTML-документ:
<HTML>
<HEAD>
<TITLE> Пример СGI-приложения</ТIТLЕ>
</HEAD>
<BODY>
<Н2> Работа с тегом Form. Метод GET </Н2>
<FORM METHOD="GET" ACT1ON=http://myself/temp/hello.exe>
<INPUT TYPE="SUBMIT">
</FORM>
<HR>
<BR>
<A HREF="http://myself/temp/hello.exe">
Вызов приложения с помощью тега "A HREF"
</А>
</BODY>
</HTML>.
5) Запустите созданный HTML-документ с помощью Internet Explorer (IE). В окне IE отобразится документ, содержаний одну кнопку и одну ссылку (рис. 2). При щелчке на любом из этих элементов в окне IE отобразится документ, соответствующий ответу запущенного CGI-сценария (рис. 3).
Рис. 2
Рис. 3
2.2. Передача cgi-приложению параметров, введенных пользователем, и получение дополнительной информации из переменных окружения
Создайте консольное приложение, результатом работы которого будет вывод используемого метода и передаваемой строки параметров.
1) Запишите в файл проекта следующий программный код:
program param;
{@APPTYPE CONSOLE}
uses
SysUtils,
Windows;
Var
buff: PChar;
ContentLength, i: Integer;
St1,St2: String;
C: Char;
Begin
// Выделение памяти под строку параметров
GetMem(buff,50);
// Получение строки параметров
GetEnvironmentVariable('REQUEST_METHOD', buff, 50):
//Преобразование строки PChar в паскалевскую строку
St1 := StrPas(buff);
// Освобождение памяти
Freemem(buff);
i:=length(St1);
While i>0 do
begin
St1[i] :=Upcase(St1[i]);
dec(i);
end;
If St1='GET’ then
begin
GetMem(buff, 200);
GetEnvironmentVariable(‘QUERY_STRING', buff 200);
St2 :=StrPas(buff);
Freemem(buff);
end;
If St1=’POST’ then
begin
GetMem(buff, 50);
GetEnvironmentVariable('CONTENT_LENGTH', buff 50);
St2 := StrPas(buff);
Freemem(buff);
ContentLength := StrToInt(St2);
St2 :=";
For i :=1 to ContentLength do
begin
Read(C);
St2 := St2+C;
end;
end;
St1:='Method'+St1;
St1 := '<H2 ALIGN=CENTER>'+St1+’</H2>';
Writeln('Content-Type: text/html');
Writeln;
Writeln('<HTML>');
Writeln('<HEAD>');
Writeln('<TITLE> Пример CGI-приложения </ТIТLЕ>');
Writeln(‘<</HEAD>');
Writeln('<BODY>');
Writeln('<H2 ALIGN=CENTER>METHOD’+St1+'</H2>');
Writeln('<BR>');
Writeln('<H2 ALIGN=CENTER>PARAMETRS:'+St2+'</H2>');
Writeln('</BODY>');
Writeln(‘</HTML>');
end.
2) Откомпилируйте полученное приложение и запишите полученный исполняемый файл в каталог Web-сервера, предназначенный для размещения исполняемых файлов и сценариев.
3) Для проверки работоспособности полученного приложения необходимо создать следующий HTML-документ:
<HTML>
<HEAD>
<TITLE> Пример СGI-приложения</Т1ТLЕ>
</HEAD>
<BODY>
<Н2> Метод GET </H2>
<FORM METHOD="GET"
ACTION=http://myself/temp/param.exe>
<INPUT TYPE="TEXT" NAME="Edit1" VALUE="test">
<BR><BR>
<INPUT TYPE="SUBMIT">
</FORM>
<HR>
<BR> <BR>
<H2> Метод POST </H2>
<FORM METHOD="POST”
ACTION="http://myself/temp/param.exe">
<INPUT TYPE="TEXT" NAME="Edit1" VALUE="test">
<BR><BR>
<INPUT TYPE="SUBMIT">
</FORM>
<BODY>
<HTML>.
4) Запустите созданный HTML-документ с помощью IE. В окне IE отобразится документ, изображенный на рис. 4. При выборе метода GET
отобразится документ, изображенный на рис. 5, при выборе метода POST отобразится документ, изображенный на рис. 6.
Рис. 4 Рис. 5
Рис. 6
5) Измените программный код приложения таким образом, чтобы CGI-программа выводила на экран переменные окружения, указанные в табл. 1,
Таблица 1
Переменные окружения
Название |
Описание |
REQUEST_METHOD |
Метод передачи информации от пользователя (GET или POST) |
SERVER_NAME |
IР-адрес или имя сервера |
SERVER_PORT |
Номер порта, используемый при обращении к серверу |
SERVER_PROTOCOL |
Название и версия протокола, по которому был передан запрос |
PATH_INFO |
Строка параметров, расположенная в запросе после имени приложения |
REMOTE_ADDR |
IP-адрес узла, с которого был послан запрос |
REMOTE_HOST |
Доменное имя узла, с которого поступил запрос |
2.3. Разработайте CGI-приложение, которое проверяет результат умножения
1) Создайте HTML-документ, с помощью которого пользователь вводит число, которое, по его мнению, должно получиться в результате умножения 2x2. При нажатии на кнопку «SUBMIT» результат передается CGI-приложению.
2) CGI-приложение сравнивает полученное число с эталонным значением и возвращает результат пользователю.
ЛИТЕРАТУРА
1. Дарахвелидзе П. Г., Марков Е. П. Разработка Web-служб средствами Delphi. СПб., БXB-Петербург, 2003.672 с.
2. Киммел П. Создание приложений в Delphi /Пер. с англ. М., Издательский дом «Вильямс», 2003. 640 с.
3. Петров В. Н. Информационные системы. СПб., Питер, 2002.688 с.
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Назовите основные элементы тега FORM.
2. Чем отличаются методы GET и POST?
3. Перечислите особенности CGI-приложений.
4. Какие Вы знаете переменные окружения CGI-программ?
