Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
prakt-Storozhok.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.98 Mб
Скачать

2. Задание по лабораторной работе

Создайте клиент-серверное приложение передачи команд и данных на сервер. В этой работе для демонстрации возможности передачи данных используется дополнительное пользовательское приложение - сервер. Передача команд осуществляется на Web-сервер и FТР-сервер.

2.1. Создание серверного приложения

Создайте приложение, изображенное на рис. 1. в соответствии с нижеследующими пунктами.

Рис. 1

1) Для создания приложения перенесите на форму компоненты перечисленные в табл. 2.

Таблица 2

Компоненты серверного приложения

Компонент

Класс

Описание

IdTCPServer1

TIdTCPServer

Компонент IdTCPServer, находящийся на странице IdServers Палитры компонентов

Label1

TLabel

Метка «Порт сервера»

Label2

TLabel

Метка «Полученное сообщение»

Edit1

TEdit

Окно для ввода номера порта сервера

Edit2

TEdit

Окно для вывода полученных сообщений

Button1

TButton

Кнопка «Запустить сервер»

Button2

TButton

Кнопка «Завершение работы»

2) Для события OnClick кнопки «Запустить сервер» запишите следующий программный код:

procedure TForm1.Button1Click(Sender: TObject);

begin

IdTcpServer1.DefaultPort := StrTolnt(Edit1.text);

IdTCPServer1.Active:= True;

end;.

Первая команда определяет номер порта, по которому сервер будет принимать данные от клиента. Вторая команда переводит сервер в состояние ожидания сообщений от клиента.

3) Для события OnExecute компонента IdTCPServer1 запишите следующий программный код:

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);

begin

Edit2.Text:=AThread.Connection.ReadLnWait;

end;.

Эта команда выводит в окно Edit2 полученный от клиента текст.

4)Для события OnClick кнопки «Завершение работы» запишите следующий программный код:

procedure TForm1.Button1Click(Sender: TObject);

begin

IdTCPServer1.Active := False;

Application.Terminate;

end:,

5) Откомпилируйте приложение.

2.2. Создание клиентского приложения

Создайте приложение, изображенное на рис. 2. в соответствии с нижеследующими пунктами.

1) Для создания приложения перенесите на форму компоненты, перечисленные в табл. 3.

2) Настройка панели гуппы радиокнопок. Для свойства Items компонента RadioGroup1 введите две строки с именами серверов (рис. 3).

3) Для события OnActivate формы Form1 запишитe следующий программный код:

procedure TForm1.FormActivate(Sender: TObject);

begin

RadioGroup1.ltemIndex := 0;

end;.

Здесь устанавливает режим выбора Web-сервера по умолчанию.

4) Для события OnClick кнопки «Передача данных» запишите следующий программный код:

procedure TForm1.Button1Click(Sender: TObject);

begin

IdTCPClient1.Host:= Edit1.Text;

IdTCPClient1.Port:= StrToInt(Edit2.Text);

IdTCPClient1.Connect;

try

IdTCPClient1.WriteLn(Edit3.Text);

finally

IdTCPClient1.Disconnect;

end; end;.

С помощью данного кода компонент IdTCPClient настраивается на работу с определенным сервером и передает ему данные. После передачи данных проводится разрыв соединения командой IdTCPClient1.Disconnect.

Рис. 2

Рис. 3

Таблица 3

Компоненты клиентского приложения

Компонент

Класс

Описание

IdTCPClient1

TidTCPClient

Компонент IdTCPCIient, находящийся на странице IdClients Палитры компонентов

GroupBox1

TroupBox

Панель «Адрес сервера»

GroupBox2

TroupBox

Панель «Передача данных»

GroupBox3

TroupBox

Панель «Передача команд»

Label 1

TLabel

Метка «Имя или адрес сервера»

Label 2

TLabel

Метка «Порт сервера»

Label 3

TLabel

Метка «Передаваемое сообщение»

Edit1

TEdit

Окно для ввода имени или адреса сервер:!

Edit2

TEdit

Окно для ввода номера порта сервера

Edit3

TEdit

Окно для ввода передаваемого на сервер сообщения

Button 1

TButton

Кнопка «Передача данных»

Button 2

TButton

Кнопка «Передача команд»

Button3

TButton

Кнопка «Очистить окно вывода»

Memo1

TMemo

Многострочное окно вывода сообщений выбранною сервера в ответ на переданную клиентом команду

RadioGroup1

TRadioGroup

Панель группы радиокнопок

5) Для события OnClick кнопки «Передача команд» запишите следующий программный код:

procedure TForm1.Button2Click(Sender: TObject);

begin

If RadioGroup1.ItemIndex=0

Then

// Передача команд на Web-сервер и получение ответа от сервера

begin

ldTCPClient1.Host:= Edit1.Text;

IdTCPClient1.Port:= StrToInt(Edit2.Text);

IdTCPClient1.Connect;

try

IdTCPClient1.SendCmd(‘GET /'.);

Memo1.Lines.Add(IdTCPClient1.CurrentReadBuffer);

finally

IdTCPClient1.Disconnect;

end;

end

else

// Передача команд на FТР-сервер и получение ответа от сервера

begin

IdTCPClient1.Host := Edit1.Text;

IdTCPClient1.Port:=StrToInt(Edit2.Text);

IdTCPClient1.Connect;

try

IdTCPClient1.SendCmd(‘USER anonymous');

IdTCPClient1.SendCmd('PASS');

IdTCPClientl.SendCmd(‘HELP');

Memo1.Lines.Add(IdTCPClient1.CurrentReadBuffer);

finally

IdTCPClient1.Disconnect;

end; end; end;.

Если выбран Web-сервер, то на сервер передается команда «GET/» — получение домашней страницы. При успешном выполнении команды в поле Memo1 выводится содержимое страницы.

Если выбран FТР-сервер, то на сервер передаются три команды:

  • «USER anonymous» - передача идентификатора пользователя;

  • «PASS» - передача пароля. В данном случае пароль не нужен;

  • «HELP» - запрос помощи.

При успешном выполнении команд в поле Memo1 выводится список команд, распознаваемых данным FTP-сервером.

6) Для события OnClick компонента RadioGroup1 запишите следующий программный код:

procedure TForm1.RadioGroup1Click(Sender: TObject);

begin

If RadioGroup1.ItemIndex=0 then Edit2.Text:= '80'

Else Edit2.Text:='21'

end;.

Этот код анализирует выбранную радиокнопку и, если выбран Web-сервер, автоматически устанавливает номер порта - 80 (порт по умолчанию для Web-сервера). В противном случае устанавливается номер порта - 21 (порт по умолчанию для FTP-сервера).

7) Для события OnClick кнопки «Очистить окно вывода» запишите следующий программный код:

procedure TForm1.Button3Click(Sender: TObject);

begin

memo1.Clear;

end;.

8) Откомпилируйте созданное приложение.

9) Проверьте и исследуйте совместную работу клиентского и серверного приложений.

ДОПОЛНИТЕЛЬНОЕ ЗАДАНИЕ

  1. Дополните и исследуйте разработанное приложение возможностью передавать несколько сообщений на сервер.

  2. Дополните и исследуйте разработанное приложение возможностью получать ответы от сервера.

ПРИМЕЧАНИЕ

Для выполнения данной работы должны быть запущены Web-сервер и FТР-сервер.

ЛИТЕРАТУРА

  1. Киммел П. Создание приложений в Delphi /Пер с англ. М., Издательский дом «Вильямс», 2003. 640 с.

  2. Фленов М. Е. Программирование в Delphi глазами хакера. СПб., БВХ-Петербург, 2005. 368 с.

КОНТРОЛЬНЫЕ ВОПРОСЫ

  1. Перечислите основные свойства компонентов IdTCPClient и IdTCPServer.

  2. Перечислите основные методы компонентов IdTCPClient и IdTCPServer.

  3. Сравните возможности компонентов IdTCPClient и IdTCPServer с возможностями компонентов TCPClient и TCPServer, ClientSocket и ServerCSocket.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]