Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.046 c
14-1102197978
olookin
2004-12-05 01:06
2004.12.26
Авангард - Ак Барс


11-1084432291
avakss
2004-05-13 11:11
2004.12.26
KOL+INDY


1-1103043162
denis24
2004-12-14 19:52
2004.12.26
form.oncreate


1-1102781264
electric
2004-12-11 19:07
2004.12.26
Как в TMemoryStream загрузить большой файл или часть файла?


3-1101213986
Vn
2004-11-23 15:46
2004.12.26
UDF функция замены символов в строке для ІВ 5.5.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский