|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.08.2013, 14:23 | #1 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
Как определить текущую скорость Ethernet сети (реальную)
Вот как это делает AIDA64:
Т.е. она в реальном времени показывает,сколько сейчас мегабайт\сек передается данных через сетевую карту. Я пробовал 2 функции: GET_ADAPTERS_INFO и GET_ADAPTER_ADRESSES, первая выводит туфту в значениях DWORD dwInUcastPkts и DWORD dwInNUcastPkts структуры MIB_IFROW: Вторая апишка использует структуру IP_ADAPTER_ADRESSES, параметры TransmitLinkSpeed и RecieveLinkSpeed недоступны на ОС ниже Висты. |
16.08.2013, 15:01 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,358
|
Наверно надо смотреть на dwInOctets и dwOutOctets и замерять время и вычислять насколько изменилось между двумя измерениями.
И кстати, не путайте мегабиты и мегабайты. |
22.09.2015, 21:00 | #3 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
Снова актуально. В инете есть исходник где данная штука реализована с помощью WMI и двух классов: NetworkAdapter и NetworkMonitor.
Получается что если я буду этот огород городить на Embarcadero C++ ,то мне придется делать код на основе CoInitializeEx и вся эта бадяга? Может что попроще и покороче есть? Ещё хочу сделать счетчик трафика, сколько принято и сколько отправлено. Как реализовано в AIDA64 так и не понял, мониторил через API Monitor V2 , но ничего так и не смог найти. |
22.09.2015, 22:33 | #4 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,783
|
Цитата:
|
|
22.09.2015, 23:34 | #5 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
Вряд ли, отображение скорости в реальном времени идет с дискретом меньше 1 секунды. Если всё это как вы предлагаете замутить в цикл, то будет загрузка CPU 100% и жуткие тормоза.
В Windows есть уже готовый инструментарий WMI Performance Counters. Просто с использованием WMI получается очень сложный и кривой код |
23.09.2015, 07:06 | #6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,358
|
|
23.09.2015, 19:18 | #7 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
Хорошо, попробуем разделить задачу на 2 части. Сначала нужно подсчитать количество переданных\принятых байт в реальном времени.
Можно ли это сделать чистым API без всякой галиматьи вроде WMI и OLE-объектов? Если использовать WMI, то без этого кода не обойтись походу: Код:
Последний раз редактировалось Stilet; 31.10.2015 в 07:45. |
23.09.2015, 19:26 | #8 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
Код:
|
23.09.2015, 19:33 | #9 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,358
|
|
23.09.2015, 19:36 | #10 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,358
|
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как узнать скорость передачи данных (при копировании файлов) по сети | calypso | Работа с сетью в Delphi | 0 | 02.12.2012 19:56 |
Сканирование документов по сети / Scan over Ethernet | mixael | Работа с сетью в Delphi | 0 | 08.10.2010 11:03 |
Как определить текущую строку StringGrid | Veiron | Общие вопросы Delphi | 2 | 24.09.2009 03:03 |
Определить текущую ячейку на листе | НикНик | Microsoft Office Excel | 5 | 18.08.2008 09:40 |
Как определить IP-адресс компьютера в локальной сети? | SalasAndriy | C/C++ Сетевое программирование | 2 | 29.11.2007 02:09 |