【问题标题】:How to ping in C++/Qt without to use a QProcess?如何在不使用 QProcess 的情况下在 C++/Qt 中执行 ping 操作?
【发布时间】:2017-12-10 03:28:48
【问题描述】:

我想在启动外部程序之前在我的 Qt 应用程序中 ping 一个 IP 地址。

我想编写一个 ping 类而不使用 ping.exe(并执行一个进程)。问题是当我“ping 127.0.0.1”时,在 Windows 上完成(ping)过程需要 3 秒以上的时间。在执行(立即)我的外部程序之前,我只需要快速检查(少于 500 毫秒)。

我想使用 QNetwork 或类似的东西。

【问题讨论】:

  • 我认为这需要几秒钟,因为ping 实用程序会发送多个回显请求。您可以将其配置为仅发送一个包,例如:ping 127.0.0.1 -n 1。进程立即退出。
  • 一种可能性是如 vahancho 所说,减少尝试次数并坚持使用“ping”,另一种可能是使用 ICMP(Internet 控制消息协议;msdn.microsoft.com/en-us/library/windows/desktop/…)并自己实施。
  • 如果您想检查连接,我不知道您为什么要 ping IP 地址。可能有其他更好的解决方案来解决此请求。

标签: qt network-programming qt5 qtnetwork


【解决方案1】:

如果您不介意在 Qt 应用程序中使用平台相关代码,您可以检查:

https://evileg.com/en/post/167/

举个例子,在 windows 上使用 ICMP echo API 和

https://noping.cc/

用于 liboping,一个用于生成 ICMP 回显请求的 Linux C 库。

【讨论】:

    猜你喜欢
    • 2020-03-13
    • 1970-01-01
    • 2013-10-04
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 2017-08-01
    相关资源
    最近更新 更多