Форум: "Сети";
Текущий архив: 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.039 c