Определение занятости Интернет-соединения

Мы разрабатываем приложение, которое будет установлено на ПК, и оно будет выполнять некоторую фоновую загрузку и загрузку на / с нашего сервера. Одно из требований - определить, занято ли в настоящее время интернет-соединение (скажем, загрузка превышает 50%), и если да, то ему необходимо откатиться и попробовать в другой раз. Основная причина - убедиться, что приложение не мешает работе пользователей, если они находятся в процессе игры, смотрят онлайн-фильмы или агрессивно загружают файлы

. После долгих размышлений и исследований в Google и, конечно же, ТАК, я все еще не нашел хороший способ реализовать это, поэтому решил выбросить это здесь. Приложение реализовано на C #, .NET 4.0, и я ищу все формы ответов - либо реализацию на C # или других языках, псевдологию или подход к достижению - измерение использования интернет-трафика на локальном ПК с помощью Достаточно хорошая точность.

Чтобы избежать дублирования усилий, до сих пор я пробовал их (и почему они не подходят)

  • Используйте WMI для получения сетевой статистики. Большинство сообщений и решений SO, так как называть это подходом, но он не отвечает нашим требованиям как измерение количества отправленных / полученных байтов относительно пропускной способности сетевого интерфейса (например,Карта Ethernet 1 ГБ) для использования даст хорошие показатели для трафика LAN, но не для интернет-трафика (где фактическая пропускная способность Интернета может составлять только 8 Мбит / с)
  • Использование статистики сетевой информации .NET или счетчика производительности - дает показания, аналогичные показаниям выше, следовательно, имеют те же недостатки
  • Используйте ICMP (Ping) и измерьте RTT. Было высказано предположение, что RTT в 400 мс считается медленным и хорошим показателем для загруженной сети, однако мне сказали, что пользователь с модемом (да, мы должны поддерживать это), использование обратного прокси или микроволнового канала часто получает пинг выше, что, следовательно, не очень хорошо measure
  • Начните загрузку известного файла и измерьте скорость - это само по себе генерирует трафик, которого мы пытаемся избежать, а также, если эта проверка выполняется достаточно часто, наше приложение в конечном итоге создаст много интернет-трафика - что опять же не идеально
  • MOD: использование BITS - эта служба может быть отключена на компьютере пользователя, требует изменения групповой политики и предполагает, что сервер будет IIS (с пользовательской конфигурацией), а в нашем случае наш сервер не IIS

Итак, вот он, я Я все путаюсь и ищу совета. Я выделил текст вопроса, чтобы вы, ребята, не заблудились, читая это и задаваясь вопросом, в чем вопрос. Спасибо.

8
задан Fadrian Sudaman 22 February 2012 в 13:38
поделиться