Windows — Извлекает время ping из системной команды в c ++ (ping x.x.x.x -n)

Я пишу небольшое консольное приложение (Windows Plateform с использованием Visual Studio 2012), которое показывает текущий пинг IP и некоторые другие статистические данные. (среднее значение за последние 100 пингов, потеря пакетов и т. д.)
Вот моя фактическая реализация:

char buffer[100];
FILE *fp = _popen("ping -l 1 -n 1 61.5.222.121" , "r");
for (i=0;i<8;i++) {
fgets(buffer,100,fp);
}
_pclose(fp)

Я вызываю эту функцию в моем основном с:

_beginthread( ping, 0, NULL );

Затем я извлекаю пинг из буфера с помощью strstr и sscanf_s.
Но когда я запускаю программу, я вижу в диспетчере процессов, что ping.exe и cmd.exe продолжают открываться / закрываться, что является нормальным, потому что при каждом открытии запускается один.

Я ищу способ получить более чистый способ получения значения времени пинга. Например, что-то, что может считывать вывод каждый раз, когда в popen создается новая строка (с помощью команды «ping google.com -t»), таким образом, будет только один процесс ping.exe и cmd.exe, который сделает все работа и время обновления пинга будут намного быстрее.

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

0

Решение

Если делать IcmpSendEcho кажется сложным, возможно, этот исходный код может помочь, который вы модифицируете для своих нужд.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]