Главная страница
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.023 c
14-1102600410
Kirill
2004-12-09 16:53
2004.12.26
Пропали компоненты


1-1102500203
snake1977
2004-12-08 13:03
2004.12.26
QRRichText


1-1102539141
aleman
2004-12-08 23:52
2004.12.26
Как это в делфи?


3-1101663252
Ярослав
2004-11-28 20:34
2004.12.26
Добавление записей в таблицу IB


14-1102056262
Leha
2004-12-03 09:44
2004.12.26
Копирование таблеток