Определить пропускную способность / тип сетевого интерфейса без передачи данных - PullRequest
4 голосов
/ 11 мая 2009

Есть ли способ в Win32 программно определить пропускную способность данного сетевого интерфейса без фактической передачи каких-либо данных? Я только хочу различать различные типы интерфейса (например, dialup vs DSL vs LAN), так что грубый порядок хорош, мне не нужно фактически измерять пропускную способность.

Справочная информация о проблеме заключается в том, что мое приложение очень сильно загружено, и я хочу вывести предупреждение пользователю, если он попытается запустить его через интерфейс с низкой пропускной способностью, например, модем удаленного доступа или модем GPRS.

Я смотрел на некоторые другие связанные вопросы , но если возможно, я бы хотел избежать измерения пропускной способности. В частности, у модемов GPRS могут быть ограничения на использование, и я не хочу принимать во внимание пособие пользователя - я бы лучше обнаружил плохое соединение другим способом и фактически не отправлял никаких данных вообще.

Меня больше всего интересуют ответы Win32 / C ++, но любые идеи будут с благодарностью приняты.

Ответы [ 3 ]

6 голосов
/ 11 мая 2009

Вы можете использовать запрос WMI, конечно, есть и вызовы функций Win32, но этот запрос:

Select * from Win32_PerfFormattedData_Tcpip_NetworkInterface
4 голосов
/ 11 мая 2009

Вы можете использовать InternetGetConnectedState , чтобы определить тип подключения (LAN / модем / и т. Д.). Это скажет вам, если у них есть несколько приличное (немодемное) соединение без передачи пропускной способности.

К сожалению, вы не можете пойти намного дальше без подключения и передачи данных. Система не может знать ограничения полосы пропускания вне ее подключения к локальной сети, т. Е. Вы можете подключиться к шлюзу напрямую через локальную сеть, и у нее может быть дрянное соединение с внешним миром. Что касается вашего компьютера, то он подключен к локальной сети с полной скоростью ...

3 голосов
/ 11 мая 2009

Почему бы не спросить пользователя? Он должен знать.

Ваше приложение может кешировать информацию о сетевом адресе и только спрашивать, изменился ли сетевой адрес.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...