- •«Дальневосточный федеральный университет»
- •Школа естественных наук материалы практических занятий
- •Определение установок сетевого адаптера
- •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.2. Компонент- idTrivialFtp
Компонент IdTrivialFTP реализует функции TFTP-клиента. Создававаемое в работе приложение-клиент должно выполнять следующие функции:
запись файла на сервер;
чтение файла с сервера.
Для выполнения данных функций следует указать имя TFТР-сервера с помощью свойства Host компонента IdTrivialFТР. Например:
IdTrivialFTPl.Host := Edit1.Text.
По умолчанию свойство Port компонента IdTrivialFTP имеет значение - 69.
Передача файла на сервер выполняется с помощью метода:
IdTrivialFTP1.Put( const LocalFile:String; const ServerFile:String;), где LocalFile - имя локального файла, содержимое которого записывается на сервер, a ServerFile - имя, под которым локальный файл записывается на сервер.
Чтение файла с сервера выполняется с помощью метода:
IdTrivialFTP1.Get IdTrivialFTP1.Get (const ServerFile:String; DestinationStream: TStream;),
где ServerFile - имя удаленного файла, содержимое которого считывается с сервера, a DestinationStream - объект «поток», создаваемый клиентом.
Компонент IdTrivialFtpServer
Компонент IdTrivialFTPServer реализует функции TFTP-сервера. Создаваемое в работе приложение-сервер должно выполнять следующие функции:
выбор рабочего каталога;
запись клиентского файла на сервер;
передачу файла от сервера к клиенту.
По умолчанию свойство DefaultPort компонента IdTrivialFTPServer имеет значение -69.
Для перевода TFTP-сервера в состояние ожидания запросов от клиента необходимо установить свойство сервера Active в состояние True. Например: IdTrivialFTPServer1.Active :=True.
TFTP-сервер самостоятельно выполняет прием и передачу файлов, то есть программировать данные операции нет необходимости. Но для обеспечения защиты своих каталогов и файлов сервер должен проверять корректность запросов пользователей.
При получении запросов пользователей на сервере происходят следующие события.
• OnReadFile - событие происходит при появлении запроса пользователя на чтение файла с сервера. Программное обеспечение сервера может выполнить дополнительную проверку на допустимость чтения указанного в запросе файла;
• OnWriteFile - событие происходит при появлении запроса пользователя на запись файла на сервер. Программное обеспечение сервера может выполнить дополнительную проверку, например, имеет ли данный пользователь права на запись файла на сервер;
• OnTransferComplete - событие происходит при завершении операции чтения/записи файлов с сервера. Программное обеспечение сервера может использовать данное событие, например, для сбора статистической информации.
2. Задание по практическому занятию
2.1. Создание серверного приложения
Создайте приложение, изображенное на рис. 1.
Рис. 1
Для создания серверного приложения выполните следующие действия.
1) Создайте новое приложение и перенесите на форму компоненты, перечисленные в табл. 1.
Таблица 1
Компонент |
Класс |
Описание |
Edit1 |
TEdit |
Окно ввода, в котором отображается выбранный рабочий каталог |
Label1 |
TLabel |
Метка «Рабочий каталог» |
Memo1 |
TMemo1 |
Многострочное окно ввода, в котором отображается информация о работе TFTP-сервера |
DirectoryListBox1 |
TDirectoryList-Box1 |
Окно выбора рабочего каталога (закладка Win 3.1 Палитры компонентов) |
DriveComboBox1 |
TDriveComboBox1 |
Окно выбора логического диска, на котором будет располагаться рабочий каталог (закладка Win 3.1 Палитры компонентов) |
IdTrivialFTPServer1 |
TIdTrivialFTPServer |
ТFTР-сервер (закладка Indy Servers Палитры компонентов) |
2) Для события формы OnCreate напишите следующий программный код:
procedure TForm1.FormCreate(Sender: TObject);
begin
// Определение корневого каталога
Edit1.Text := GetCurrentDir;
//Активизация TFTР-сервера
IdTrivialFTPServerl.Active:=True;
end;.
3) Для события OnChange компонента DriveСomboBox1 напишите следующий программный код:
procedure TForm1.DriveComboBox1Change(Sender: TObject);
begin
DirectorylistBox1.Drive := DriveComboBoxl.Drive;
end;.
С помощью представленного программного кода для компонента DirectoryListBoxl выбирается текущий логический диск.
4) Для события OnChange компонента DriveComboBox1 напишите следующий программный код:
procedure TForm1.DirectoryListBoxlClick(Sender: TObject);
begin
Edit1.Text:=DirectoryListBoxl.GetItemPath(DirectoryListBox1.ItemIndex);
end;.
Этот программный код заносит в окно Edit1 выбранный рабочий каталог.
5) Для события OnReadFile компонента IdTrivialFTPServer1 напишите следующий программный код:
procedure TForm1.IdTrivilFTPServerlReadFile(Sender: TObject;
var FileName: String; const Peerinfo: TPeerlnfo;
var GrantAccess: Boolean; var A Stream: TStream;
var FreeStreamOnComplete: Boolean);
VAR
s: String;
begin
FreeStreamOnComplete := false;
s:=’ ~отказано';
try
If GrantAccess then
Begin
s :='- предоставлен';
end;
finally
memo1.Lines.Add(Format('%s: %d - Доступ по чтению к %s %s',
[PeerInfo.PeerIP, PeerInfo.PeerPort, Filename, s]));
end;
end;.
Событие возникает, когда клиент обращается к серверу с запросом на чтение файла. Если доступ к рабочему каталогу разрешен, сервер начинает процесс передачи файла клиенту. Приведенный программный код проверяет, разрешен ли доступ и выводит в окно Memo1 справочную информацию.
6) Для события OnWriteFile компонента IdTrivialFTPServer1 напишите следующий программный код:
procedure TForm1.IdTrivialFTPServer1WriteFile(Sender: TObject;
var FileName: Siring; const PeerInfo: TPeerInfo;
var GrantAccess: Boolean; var AStream: TStream;
var FreeStreamOnComplete: Boolean);
VAR
s: String;
begin
FreeStreamOnComplete:=false;
s :='- отказано';
try
If Grant Access then
begin
s :='- предоставлен';
end;
finally
memo1.Lines.Add(Format('%s: %d - Доступ по записи к %s %s',
[PeerInfo.PeerIP, PeerInfo.PeerPort.Filename,s]));
end;
end;.
Событие возникает, когда клиент обращается к серверу с запросом на запись файла в рабочий каталог сервера. Если доступ к рабочему каталогу разрешен, сервер начинает процесс записи получаемого клиентского файла. Приведенный программный код проверяет, разрешен ли доступ и выводит в окно Memo1 справочную информацию.
7) Для события OnTransferComplete компонента IdTrivialFTPServer1 напишите следующий программный код:
procedure TForm1.IdTrivialFTPServer1TransferComplete(Sender: TObject; const Success: Boolean; const PeerInfo: TPeerInfo; AStream: TStream;
const WriteOperation: Boolean);
Var s: String;
begin
try
If Success then s := ' выполнена'
else s :=' прервана';
memo1.Lines.Add(Format('%s: %d -Передача %s',
[PeerInfo.PeerIP, PeerInfo.PeerPort, s]));
finally
AStream.Free;
end;
end;.
Событие возникает, когда на сервере закончен процесс чтения или записи файла, получаемого or клиента или передаваемого клиенту. Приведенный программный код проверяет, успешно или нет выполнена операция и выводит в окно Memo1 справочную информацию.
8) Откомпилируйте созданное приложение.
