Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.26;
Скачать: CL | DM;

Вниз

FTP-клиент   Найти похожие ветки 

 
Дмитрий Ботвин   (2004-10-14 09:20) [0]

Всем привет! У меня прога, которая показывает видеоклипы и
графические файлы на форме и параллельно в отдельном потоке с
заданного ftp-сервера подкачивает новые файлы. Сам ftp-клиент
написан на IdFTP. Проблема в том, что если канал до ftp-сервера
узкий то подкачка новых файлов происходит крайне медленно и при
этом демонстрация файлов подтормаживает. Приоритет потоку с ftp-
клиентом ставил разный - не помогло. Подскажите что делать?


 
alecsoid   (2004-10-14 09:59) [1]

Скинь прогу, точнее сам блок скачки в отдельном потоке плиз!


 
Reindeer Moss Eater ©   (2004-10-14 10:01) [2]

Подскажите что делать?

Увеличивать размер буфера. Больше ничего не поможет при тонком каналею


 
Дмитрий Ботвин   (2004-10-14 10:52) [3]

Вот сам модуль скачки:

procedure FTPThread.DownloadFiles;
 var Name, ext: String;
     LS: TStringList;
     i: integer;
 begin
   //Подключаемся
   Form1.IdFTP1.Username := Form1.User.Text;
   Form1.IdFTP1.Password := Form1.Pswd.Text;
   Form1.IdFTP1.Host := Form1.Server.Text;
   Form1.IdFTP1.Passive :=true;
   try
     Form1.IdFTP1.Connect;
   except
     exit;
   end;
   LS := TStringList.Create;
   Form1.IdFTP1.ChangeDir(Trim(Form1.CurDir.Text));
   Form1.IdFTP1.TransferType := ftASCII;
   Form1.IdFTP1.List(LS);
   if LS.Count=0 then
     begin
       LS.Free;
       Form1.IdFTP1.Quit;
       exit;
     end;
   Form1.IdFTP1.TransferType := ftBinary;
   for i:=0 to LS.Count-1 do
      begin
        if not(Form1.IdFTP1.Connected) then
          begin
            LS.Free;
            exit;
          end;
        if not(Form1.IdFTP1.DirectoryListing.Items[i].ItemType = ditFile) then continue;
        Name := Form1.IdFTP1.DirectoryListing.Items[i].FileName;
        if Name[1]="~" then continue;
        //Проверяем, нет ли уже такого файла
        if FileExists(Form1.PathAVI.Text+"\"+Name) then continue;
        //Проверяем, нужен ли режим докачки
        if FileExists(Form1.PathAVI.Text+"\~"+Name) then
          //Докачка файла
          try
            Form1.IdFTP1.Get(Name, Form1.PathAVI.Text+"\~"+Name, false, true);
          except
            //Не докачали
            continue;
          end
        else
          try
            Form1.IdFTP1.Get(Name, Form1.PathAVI.Text+"\~"+Name, false);
          except
            //Не скачали
            continue;
          end;
        //Скаченный файл нужно переименовать
        RenameFile(Form1.PathAVI.Text+"\~"+Name, Form1.PathAVI.Text+"\"+Name);
      end;
   LS.Free;
   Form1.IdFTP1.Quit;
 end;

А как увеличить размер буфера???


 
Reindeer Moss Eater ©   (2004-10-14 11:36) [4]

Проигрыватель проигрывает скачиваемый файл из буфера.
В буфер качает фтп клиент.

Если проигрыватель "сосет" из буфера икс килобайт в секунду (битрейт фильма), а канал позволяет пополнять буфер со скоростью игрек килобайт в секунду, и икс > игрек то никакими приоритетами скачивающего потока дело не улучшить.

Только увеличивать буфер.

А как увеличить размер буфера???
Сначала поискать его реализацию в программе.


 
Дмитрий Ботвин   (2004-10-14 11:40) [5]

Да я его нашел - он равен 32кб. Как думаете скока ему поставить
то надо? Какой предел, если он есть? И как увеличение размера
буфера влияет на работу FTP?


 
Reindeer Moss Eater ©   (2004-10-14 11:45) [6]

И как увеличение размера
буфера влияет на работу FTP?


Никак не влияет.
Размер влияет на работу плеера.


 
Дмитрий Ботвин   (2004-10-14 11:48) [7]

Reindeer Moss Eater спасибо, щас попробую!!!



Страницы: 1 вся ветка

Текущий архив: 2004.12.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.035 c
14-1102104298
SergP
2004-12-03 23:04
2004.12.26
Интерестная штука в Паскале.


1-1102946209
Илья
2004-12-13 16:56
2004.12.26
GetMem функция


1-1102585614
Erik1
2004-12-09 12:46
2004.12.26
Сортировка в TList


1-1102686117
Easter
2004-12-10 16:41
2004.12.26
TEdit ы на TForm


4-1100097837
Павел
2004-11-10 17:43
2004.12.26
USB->RS232