Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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.048 c
1-1159008685
DelphiLamer
2006-09-23 14:51
2006.11.05
Как получить список всех процедур в библиотеке?


15-1160936200
Сало
2006-10-15 22:16
2006.11.05
61 MIPS. Какой это проц?


15-1160751654
oldman
2006-10-13 19:00
2006.11.05
Возвращаясь к теме ХР...


2-1161069191
Батя
2006-10-17 11:13
2006.11.05
Типа listbox a только в место текста картинки


15-1160170272
Альберт
2006-10-07 01:31
2006.11.05
смена иконки скомпилированной программы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский