【问题标题】:Retrieve ping time from system command in c++ (ping x.x.x.x -n)从 C++ 中的系统命令检索 ping 时间(ping x.x.x.x -n)
【发布时间】:2013-06-25 06:13:18
【问题描述】:

我正在编写一个小型控制台应用程序(使用 Visual Studio 2012 的 Windows 平台),它显示当前对 IP 的 ping 和其他一些统计信息。 (最近 100 次ping、丢包等的平均值……) 这是我的实际实现:

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)

我在我的 main 中调用这个函数:

_beginthread( ping, 0, NULL );

然后我使用 strstr 和 sscanf_s 从缓冲区中提取 ping。 但是当我执行程序时,我在进程管理器中看到 ping.exe 和 cmd.exe 一直在打开/关闭,这是正常的,因为在每次弹出时,它都会启动一个。

我正在寻找一种更简洁的方法来检索 ping 时间值。例如,每次在 popen 中创建新行时都可以读取输出(使用命令“ping google.com -t”),这样就只有一个 ping.exe 和 cmd.exe 进程可以完成所有操作作业和 ping 刷新时间会快得多。

我研究了 IcmpSendEcho 命令,但这对我来说看起来很复杂。我基本上想要一个运行到后台的简单函数,并在每次他收到一个新的时将 ping 响应时间写入一个全局变量。

【问题讨论】:

标签: c++ windows console ping icmp


【解决方案1】:

如果执行 IcmpSendEcho 看起来很复杂,也许 this source code 可以提供帮助,您可以根据需要进行修改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 2020-12-04
    • 1970-01-01
    • 2020-10-13
    • 2013-08-13
    相关资源
    最近更新 更多