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];
if (!system(tmp.c_str())) {
cout << "ping " << strip[i] << ",success!\n";
} else {
cout << "ping " << strip[i] << ",failed!\n";
}
}
return 0;
}