![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Какие есть идеи, как ограничивать 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]>искуственно задержками