how to check computer's state using Qt?

前端 未结 3 1012
情歌与酒
情歌与酒 2020-12-12 00:30

i\'m trying to get computer\'s state in my LAN... thought about using QTcpSocket but it\'s not realy effective since port also should be inserted as:

socket-         


        
相关标签:
3条回答
  • 2020-12-12 01:04

    ping

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

    Arguments may vary. For example, I believe it would be ping -n 1 "hostname" on Windows. The example should work on most non-Windows versions.

    0 讨论(0)
  • 2020-12-12 01:08

    One good way is just to verify that they can resolve domain names using QHostInfo. If they can then they likely have internet access:

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

    Of course, you could just try to connect to the host as well, which is even better proof that everything is working correctly. I would do it asynchronously rather than synchronously, but it's truly the best test.

    0 讨论(0)
  • 2020-12-12 01:13

    Are you trying to check if your local machine is on the network or if a target machine is ?

    There isn't a good cross platform way of doing this. The nearest on qt is QNetworkInterface, and check attribute "ISup" - it's not perfect, it may be active if you have a network cable connected but just to a router, and inactive if you have a 3G modem but aren't on a call.

    On Windows check InternetGetConnectedState()

    0 讨论(0)
提交回复
热议问题