Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Какие есть идеи, как ограничивать TCP траффик программы? [D7, Win2k]


Zelius ©   (2003-05-14 17:49:00) 

Это делается искуственно задержками в программе или с помощью WinSock API? Спасибо!


Zelius   (2003-05-20 17:09:00) [1]


> "Многопоточное скачивание" и "сколько осталось времени"
> - значит речь идет о закачке одного файла несколькими потоками?
> Зачем тогда ограничивать трафик?

А хрен его знает! Юзер говорит, что хочет :) Причем, ограничение на весь траффик программы, а не на один поток...


Reindeer Moss Eater   (2003-05-20 13:26:00) [2]

как правильно показывать скорость закачки и сколько осталось времени, тем более в многопоточном скачивании...

"Многопоточное скачивание" и "сколько осталось времени" - значит речь идет о закачке одногофайла несколькимипотоками? Зачем тогда ограничивать трафик?

Сразу вспомнил своего водителя-инструктора из автошколы ДОСААФ, который матерился, если обучаемый жал на тормоз, не снимая ноги с педали газа. :)


Reindeer Moss Eater   (2003-05-20 13:07:00) [3]

Задача для школьников младших классов:

Дано: файл длиной N мб.
Требуется: принять/передать файл со средней скоростью X байт/сек
Решение:
1. Выбираем блок небольшой длины. Например Y байт.
2. Вычисляем сколько миллисекунд долже приниматься передаваться блок со скоростью X байт/сек
3. Делаем GetTickCount, передаем/принимаем блок, Делаем GetTickCount еще раз
4. Сравниваем расчетное время передачи с реальным
5. Если расчетное время передачи/приема блока превышает реальное, делаем Sleep(Разница_Расчетного_и_Реального_времени)
6. Передаем/принимаем следующий блок.


Zelius   (2003-05-20 12:56:00) [4]

Проблема не в том, как вычислить задержку, на которую поток заснет, а в том как правильно показывать скорость закачки и сколько осталось времени, тем более в многопоточном скачивании... Я так и не придумал нормального способа, бум думать дальше...


leonidus   (2003-05-20 12:02:00) [5]

Так какже РЕАЛЬНО а не для виду, ограничить трафик?


Reindeer Moss Eater   (2003-05-19 13:21:00) [6]

а ты попробуй
Я пробовал делить еще в средней школе.
Помню получалось неплохо.


Reindeer Moss Eater   (2003-05-19 13:20:00) [7]

Загляни лучше внутрь модуля IdIOHandlerThrottle.


Zelius   (2003-05-19 13:20:00) [8]


> Reindeer Moss Eater (19.05.03 13:15)

а ты попробуй, а то я тебе говорю как есть на самом деле, а ты мне не веришь...


Reindeer Moss Eater   (2003-05-19 13:15:00) [9]

...будет сильно прыгать...
С чего бы вдруг?

...и показывать какой угодно результат кроме реального ...
Ну это зависит от собственных навыков в простых арифметических действиях


Zelius   (2003-05-19 11:20:00) [10]


> Reindeer Moss Eater (19.05.03 09:00)

Определение скорости простым делением скаченного на время будет сильно прыгать и показывать какой угодно результат кроме реального, покажет только порядок! А если еще и идет ограничение траффика, то есть Sleep(), то цифры ыообще буду плясать...


Reindeer Moss Eater   (2003-05-19 09:00:00) [11]

А если скачивать в несколько потоков и у каждого потока своя скорость? Причем она неравномерная...

И что это меняет?


Zelius   (2003-05-18 20:32:00) [12]


> Reindeer Moss Eater (15.05.03 09:24)

А если скачивать в несколько потоков и у каждого потока своя скорость? Причем она неравномерная...


leonidus   (2003-05-17 23:21:00) [13]

>Reindeer Moss Eater не понял мысль?


Zelius   (2003-05-15 10:32:00) [14]

А можно ли к этой теме прикрутить QoS из WinSock2 ? И если нет, то тогда зачем оно нужно :)


Reindeer Moss Eater   (2003-05-15 09:24:00) [15]

FlashGet и Reget знают страшную тайну, что если количество считанных байт разделить на время, то получится скорость.


leonidus   (2003-05-14 22:53:00) [16]

Но ведб FlashGet и ReGet как-то умеют ограничивать трафик, или они используют просто искусственные приемы?


servs   (2003-05-14 19:25:00) [17]

Програма твоя?

Тогда делаешь буфер. И в функции FlushBuffer искуственно ограцичиваешь.
Но насколько я помню, задача не тривиальная. Сам не делал, друг маялся, но помню что не все гладко было.


Malder   (2003-05-14 19:10:00) [18]

>искуственно задержками


Наверх

Титульная страница Поиск, карта сайта Написать письмо