如何使用Qt检查计算机的状态?

时间:2010-04-08 15:41:06

标签: qt networking

我正试图在我的局域网中获取计算机状态... 考虑使用QTcpSocket,但它并不真正有效,因为端口也应插入:

socket->connectToHost("hostName", portNumber);
if (socket->waitForConnected(1000))
     qDebug("Connected!");

有人能告诉我一个更好的方法来检查计算机是否有响应吗?

3 个答案:

答案 0 :(得分:1)

ping

int exitCode = QProcess::execute("ping", QStringList() << "-c1" << "hostname");
if (0 == exitCode) {
    // it's alive
} else {
    // it's dead
}

参数可能有所不同。例如,我相信它在Windows上会ping -n 1 "hostname"。该示例应适用于大多数非Windows版本。

答案 1 :(得分:1)

您是否尝试检查本地计算机是否在网络上或目标计算机是否在?

没有一个很好的跨平台方式来做到这一点。 qt上最近的是QNetworkInterface,并且检查属性“ISup” - 它不是完美的,如果你有网络电缆但是只连接到路由器,它可能是活动的,如果你有一个3G调制解调器但它不是非活动的打电话。

在Windows上检查InternetGetConnectedState()

答案 2 :(得分:-1)

一种好方法是验证他们是否可以使用QHostInfo解析域名。如果他们可以,那么他们可能有互联网访问:

QHostInfo::lookupHost("www.kde.org", this, SLOT(lookedUp(QHostInfo)));

当然,您也可以尝试连接到主机,这甚至可以更好地证明一切正常。我会异步而不是同步,但它确实是最好的测试。