如何在C++/Qt中进行ping操作而不使用QProcess?

4

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

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

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


1
我认为它需要几秒钟的时间,因为 ping 实用程序发送多个回显请求。您可以将其配置为仅发送一个数据包,例如:ping 127.0.0.1 -n 1。该进程会立即退出。 - vahancho
一种可能性是像vahancho所说的那样减少尝试次数并坚持使用“ping”,另一种可能性是使用ICMP(Internet Control Message Protocol;https://msdn.microsoft.com/en-us/library/windows/desktop/aa366050(v=vs.85).aspx)并自己实现它。 - Robert
1
我无法理解为什么你想要ping一个IP地址,如果你想要检查连接的话。可能有其他更好的解决方案来解决这个请求。 - saeed
1个回答

0

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

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

在Windows上使用ICMP echo API的示例

https://noping.cc/

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接