Форум: "Сети";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
Внизбольшой размер файла Найти похожие ветки
← →
anton773 © (2006-06-13 04:59) [0]Здравствуйте! Создал свой закатчик файлов с возможностью докачки в случае обрыва связи.Все работает,но объём траффика на 30% больше размера скачанного файла.Почему? Использую Wininet.
← →
Сергей М. © (2006-06-13 08:40) [1]
> Почему?
Хотя бы потому что используется IP-протокол
← →
novill © (2006-06-13 15:55) [2]
> anton773
как докачку организовывали?
← →
anton773 © (2006-06-13 21:13) [3]To Сергей я понимаю что объем траффика будет всегда больше размера скачанного файла но не на треть же! Вот код: procedure
TForm2.BitBtn1Click(Sender: TObject);
var
F: file;
Resumepos,Bufferlen,Sumsize :dword;
hSession,hUrl:Hinternet;
Buffer: array[1..1024] of byte;
err: boolean;
begin
Sumsize:=0; Resumepos:= 0;
AssignFile(F,Table1.FieldByName("filename").AsString);
if FileExists(Table1.FieldByName("filename").AsString) then
begin
Reset(f,1);
Resumepos:= FileSize(f);
Seek(f,filesize(f));
end else Rewrite(f,1);
NADO := true;
hSession:= InternetOpen("andowload",PRE_CONFIG_INTERNET_ACCESS,nil,nil,0);
hUrl:= InternetOpenUrl(hSession,pchar(Table1.FieldByName("Url").AsString),nil,0,0,0);
InternetQueryDataAvailable(hUrl,Sumsize,0,0);
Table1.Edit;
Table1.FieldByName("Size full").AsInteger:= Sumsize ;
if Resumepos > 0 then
begin
InternetSetFilePointer(hUrl,Resumepos,nil,0,0);
end;
repeat
err:= InternetReadFile(hUrl,@buffer,SizeOf(Buffer),Bufferlen);
if err= false then
begin
ShowMessage("облом");
Exit;
end;
BlockWrite(f,Buffer,Bufferlen);
Application.ProcessMessages;
until (Bufferlen= 0) or (NADO= false);
ShowMessage("успешно загружено");
← →
Defunct © (2006-06-14 04:22) [4]> Вот код
Код жуткий..
А по поводу избыточности.
TCP/IP - имеет строго фиксированный объем служебного трафика (т.е. чем больше будет суммарный объем пакета, тем больше будет процент полезных данных).
HTTP/FTP протоколы, которые над TCP имеют изменяющийся объем служебной информации.
30% служебной информации вероятно из-за того, что у вас используется мизерный объем пакетов (256-500 байт). Часом не dialup соединение?
← →
anton773 © (2006-06-14 04:57) [5]
> Часом не dialup соединение?
Угадали. А чем вам не нравиться Код? Я не претендую на корректность кода(новичок) Если знаете подскажите что не так.Буду благодарен.
← →
Defunct © (2006-06-16 02:06) [6]anton773 © (14.06.06 04:57) [5]
> Угадали.
Теоретически можно увеличить объем пакетов PPP протокола, тогда отношение полезного трафика к служебному увеличится. Если линия цифровая и сбоев в работе модема не наблюдается, можно повышать объем пакета до 2kb. К сожалению не могу подсказать где в Windows можно осущетсвить эту настройку (и возможно ли вообще).
> Если знаете подскажите что не так.Буду благодарен.
Подсказка - отсутствует форматирование, что приводит к:
- не просматривается алгоритм работы процедуры;
- усложняется чтение кода;
- усложняется поиск возможных ошибок.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.075 c