使用C++编写的QT GUI应用程序,用于检查网络状态。

4

最近我在进行一些有关QT的实验,我有一台触屏Linux PC,连接到了WiFi网络。与其老式地通过ping来测试网络,我想做一个应用程序。

这个应用程序的界面是这样的:我会输入一个IP地址,应用程序将对网络进行ping测试,并告诉我这个IP地址是否可达。当正在ping测试时,绿色勾号将被显示,如果没有ping通,则会显示红色勾号。

我的进展是:我能够在脚本文件中获取IP并ping它。但问题是如何将ping回复与应用程序进行交互。也就是说,如何处理两个标签(绿色和红色勾号)?

谢谢您的帮助。我的GUI看起来像这样:

enter image description here


使用方式就像我说的那样,可以在移动中监控我的网络节点 :) 我只需输入一个IP地址,它就会显示它是否UP。当然,您可以运行普通的ping命令,也有数十亿个现成的应用程序可供使用。但是... ... ... - RicoRicochet
看起来你是对的,这个问题确实是重复的。不知道为什么在我发布问题时它没有出现。抱歉。 - RicoRicochet
1个回答

5

目前没有一个好的跨平台的方式来实现这个。但你可以使用特定于平台的方式:

在Linux系统上,你可以:

int returnedCode = QProcess::execute("ping", QStringList() << "-c 1" << ui->ipEdit->text());
if (returnedCode == 0) 
{
    // It's active, Show Green Check
} else 
{
    //  It's dead, Show Red Check
}

在Windows上,它的操作方式类似于:
int returnedCode = QProcess::execute("ping", QStringList() << "-n" << "1" << ui->ipEdit->text());
if (returnedCode == 0) 
{
    // It's active, Show Green Check
} else 
{
    //  It's dead, Show Red Check
}

尝试一次是个坏主意。网络可能已经启动,但某个数据包不知何故丢失了。我建议最少试三次。进一步挑剔,“未激活”比“死亡”更好的名称。网络可能并非完全死亡,只是处于未激活状态。 - László Papp
1
嘿,它解决了我的问题。请告诉我是否有关于QT实践学习的任何学习材料。 - RicoRicochet
特别是在Linux上。Ubuntu Precise非常棒。 - RicoRicochet
@AmarjitBiswas:还可以看看这篇文章,它似乎几乎相同。虽然那是4年前的事了,但我认为它仍然有效:http://stackoverflow.com/a/2601352/2682142 - László Papp
确实你是对的。但是在发布时它没有显示出来,不知道为什么。 - RicoRicochet
@Nejat 你能否请看一下这个问题:https://stackoverflow.com/questions/45858376/creating-dmg-for-qt-app-mac-osx - arqam

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