Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Then begin




 

Form1.Frame51.mmOut.Lines.Add(TimeToStr(Time) + ' Файл, с удалённой машины, ' + Form1.Frame51.Memo1.Lines[Form1.Frame51.P] + ' скопирован.');

Form1.Frame51.ProgressBar1.Position := ProgressBar1.position + Form1.Frame51.U;

 

 

end;

End

Else begin

Timer1.Enabled := false;

Label2.Caption := 'Копирование завершено.';

mmOut.Lines.Add('Копирование завершено.');

ProgressBar1.position := 100;

MessageBox(0, 'Передача файлов завершена', 'Трансфер', mb_IconInformation);

Form1.Frame51.Hide;

Form1.Frame41.Show;

end;

end;

 

Серверу посылается полный пут к файлу на удалённом компьютере, и указывается путь на локальной машине. Если произошла ошибка, то в отчёт пишется имя файла с ошибкой. Взаимодействие осуществляется двумя компонентами: в клиент – программе – TIdTFTPClient, на Сервере – TIdTFTPServer. Т.е.трансфер основан на протоколе TFTP. Он базируется на транспортном протоколе UDP и разработан - максимально увеличить скорость передачи файлов.

Обработка и передача файлов на Сервере осуществляется следующим образом:

 

procedure TMain.IdTrivialFTPServer1ReadFile(Sender: TObject;

var FileName: String; const PeerInfo: TPeerInfo;

var GrantAccess: Boolean; var AStream: TStream;

var FreeStreamOnComplete: Boolean);

Begin

if FileExists(FileName)

Then

Begin

AStream := TFileStream.Create(FileName, fmOpenRead);

GrantAccess := True;

FreeStreamOnComplete := True

End else

GrantAccess := False;

end;

Обработчик получает имя требуемого файла (FileName) и информацию о клиенте (PeerInfo). Если файла не существует, то GrantAccess := False; и в Клиент-программе возникает ошибка копирования файла.

Дальнейшая работа Сервера проходит автоматически. Сервер делит исходный файл на дэйтаграммы и передаёт их клиенту. Обработка любого запроса клиента идёт в отдельном потоке команд.

 

Если файл передан, то в таймере происходит реакция на событие FileExists():

 

if fileexists('Files\' + Memo1.Lines[P])

Then begin

Form1.Frame11.Memo2.Lines.Add(TimeToStr(Time) + ' Файл с удалённой машины ' + Memo1.Lines[P] + ' скопирован.');

Form1.Frame11.QProgressBar1.position := Form1.Frame11.QProgressBar1.position + U;

End;

 

В отчёте пишется, что файл скопирован, и прогрессбар увеличивает свою позицию на заранее рассчитанное число.

 

Если все файлы скопированы, таймер отключается В отчёте пишется, что копирование завершено. Выдаётся диалоговое окно, чтобы завершить работу с копированием файлов и отображаются те фреймы на главной форме, которые были до того, как началось копирование файлов:

 


Поделиться:

Дата добавления: 2015-08-05; просмотров: 50; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.011 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты