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

Вниз

большой размер файла   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.065 c
15-1161243592
Плохиш
2006-10-19 11:39
2006.11.05
Растаможить новую машину в Украине стоит больше 6000 Евро?


15-1160656122
Slava812
2006-10-12 16:28
2006.11.05
Вкладка безопасность


1-1159276063
Lexer
2006-09-26 17:07
2006.11.05
Вызов MDI окна не меняя WindowState у родителя


8-1143789307
Feg16
2006-03-31 11:15
2006.11.05
Вывод потокового звука


15-1160891794
cyborg
2006-10-15 09:56
2006.11.05
С чего начинать проект?