qt、c++實現ping,檢測網絡連通性

windos平臺Qt實現ping檢測網絡連通性

#include <QApplication>
#include <Windows.h>
#include <Sensapi.h>
#include <Wininet.h>
#include<qDebug>
#include <QTextCodec>
#include<QProcess>
#pragma comment(lib,"Sensapi.lib")
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QProcess exc;
    QTextCodec *codec = QTextCodec::codecForName("GBK");
    QString cmdstr="ping 192.168.110.179";//ping 192.168.110.179  -n 2 -w 4000
       exc.start(cmdstr);//執行ping
       exc.waitForFinished(-1);//等待ping完成
       QString  outstr=codec->toUnicode(exc.readAll());//獲取ping結果

//返回不等於-1,說明ping結果包含"往返行程的估計時間"字段,則說明ping成功,網絡可達;等於-1,表示沒有此字段,說明ping不通
       if((-1 !=outstr.indexOf("往返行程的估計時間")))
       {
           qDebug("在線\n");
       }else
       {
           qDebug("離線\n");

       }
    return a.exec();
}

linux平臺c++實現ping檢測網絡連通性

#include<stdio.h>
#include<iostream>
#include <stdlib.h>
using namespace std;
int main() {
    //-c 指定ping次數; -i指定ping的時間間隔
    string strping = "ping -c 3 -i 0.5 ";
    string strip[3] = { "192.168.110.179", "192.168.0.1", "192.168.122.1"};
    for (int i = 0; i < 3; i++) {
        string tmp = strping + strip[i];

       //關於linux的system函數返回值可點擊查看

        if (!system(tmp.c_str())) {
            cout << "ping " << strip[i] << ",success!\n";
        } else {
            cout << "ping " << strip[i] << ",failed!\n";
        }
    }
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章