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

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

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

Клиентское приложение должно выполнять следующие действия:

  • задавать IP-адрес сервера;

  • устанавливать соединение с сервером;

  • принимать от сервера показания системных часов и информацию о статусе виртуальной памяти.

Рис. 2

Для выполнения перечисленных действий следует.

  1. Создать проект.

  2. Присвоить форме имя ClientForm.

  1. Установить на форме компонент TClientSocket. Установите следую­щие свойства компонента TClientSocket (с помощью инспектора объектов):

Name - ClientSocket; Port - 1024 (или любой другой порт, соответствующий номеру порта сервера).

4) Установите на форме два компонента TSpeedButton (страница Additional Палитры компонентов) - «Показания системных часов на сервере» и «Информация о виртуальной памяти на сервере».

Установите следующие свойства кнопки «Показания системных часов на сервере»:

Name - TimeSpeedButton;

AllowAllUp-True;

Grouplndex - 1.

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

Установите следующие свойства кнопки «Информация о виртуальной памяти на сервере»:

Name - MemSpeedButton;

AllowAllUp -True;

Grouplndex - 2.

Установите на форме командную кнопку «Разорвать соединение». Установите следующие свойства кнопки «Разорвать соединение»:

Name - Disconnect;.

5) Введите дополнительную процедуру установления соединения с сервером (не забудьте описать эту процедуру в структуре type там, где описаны все остальные процедуры):

procedure TClienForm.ConnectToServer;

var sAddr: string;

begin

//Если соединение еще не установлено, то устанавливается соединение

if ClientSocket.Active then ClientSocket.Active:=False;

try

if not InputQuery('Выбор хоста', 'IP-адрес хоста', sAddr) then Abort;

if Length(sAddr)=0 then Abort;

with ClientSocket do

begin

Host := sAddr;

Active:=True;

end;

except

TimeSpeedButton.Down:=False;

MemSpeedButton.Down := False;

end;

end;.

6) Программирование компонента ClientSocket.

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

procedure TClientForm.ClientSocketError(Sender: TObject;

Socket: TCustomWinsocket; ErrorEvent: TErrorEvent;

var ErrorCode: Integer);

begin

Application.MessageBox(pChar(Format('Ошибка соединения c%s:

'#13#10'%s', [ClientSocket.Host, SysErrorMessage(ErrorCode)])), pChar(Application.Title), MB_ICONERROR or MB_Ok);

ErrorCode :=0;

MemSpeedButton.Down := False;

TimeSpeedButton.Down := False;

end;.

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

procedure TClientForm.ClientSocketRead(Sender. TObject;

Socket: TCustomWinsocket);

var s, s1: string; p: pChar;

begin

s:= Socket.ReceiveText;

iа TimeSpeedButton.Down then

begin

p:=AnsiStrRScan(pChar(s),T);

if p <>nil then

begin

TimeSpeedButton.Caption := Copy(string(p),2, 8);

end; end;

if MemSpeedButton.Down then

begin

p :=AnsiStRScan(pChar(s),'M');

if p<>nil then

begin

MemSpeedButton.Caption :=Copy(string(p), 2, 11);

end; end;

end;.

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

procedure TClientForm.MemSpeedButtonClick(Sender: TObject);

begin

//если кнопка нажата и соединение еще не установлено, то

//устанавливается соединение

if MemSpeedButton.Down then

begin if not ClientSocket.Active then ConnectToServer; end

else

begin

// Если не нажата ни одна из кнопок, то соединение разрывается

if not TimeSpeedButton.Down then ClientSocket.Active:=False;

MemSpeedButton.Caption:= 'Информация о вирт. памяти на сервере’;

end;

end;.

9) Для события OnCIick компонента TimeSpeedButton записать следующий программный код:

procedure TCIientForm.TimeSpeedButtonClick( Sender: TObject);

begin

if TimeSpeedButton.Down then

begin if not ClientSocket.Active then ConnectToServer; end

else

begin

if not MemSpeedButton.Down then ClientSocket.Active:= False;

TimeSpeedButton.Caption :='Показания системных часов на сервере';

end;

end;.

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

procedure TClientForm.DisconnectClick(Sender: TObject);

begin

TimeSpeedButton.Down := False;

MemSpeedButton.Down := False;

ClientSocket.Close;

end;.

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