Существует несколько способов сделать это в Windows:
Само приложение может неявно ограничивать скорость загрузки, отслеживая собственный битрейт и спя между вызовами recv()
или read()
в сокете, какНужно.
Я подозреваю, что Internet Download Manager может устанавливать себя как локальный HTTP-прокси и настраивать браузеры для маршрутизации всех запросов через него.А затем использует собственный сетевой код для потоковой загрузки с соответствующей скоростью, используя простую технику, описанную выше.Посмотрите, есть ли для вашего браузера настроенный прокси-сервер http - это должно быть хорошим советом, если это именно то, что он делает.
Еще один способ - использовать поставщика многоуровневых служб Winsock или драйвер фильтра.Попробуйте набрать netsh winsock show catalog
из командной строки (многие системные уже установлены).
А у Winsock есть старый QOS API , который может "формировать трафик" наконкретный сокет.(И если память служит, у нее даже есть некоторая поддержка системной политики, где она может быть настроена снаружи приложения).