返回

QT实现ping命令

发布时间:2023-02-04 00:16:47 435
#ifndef WIDGET_H
#define WIDGET_H

#include
#include
#include
#include
#include
#include
#include

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
Q_OBJECT

public:
Widget(QWidget *parent = nullptr);
~Widget();
public slots:
void Myping();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//使用正则表达式限制输入
ui->lineEdit_ip->setValidator(new QRegExpValidator(QRegExp("\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b")));
connect(ui->pushButton_ip,&QPushButton::clicked,this,&Widget::Myping);

}
/* bool Widget::Myping()
{

QProcess exc;
QTextCodec *codec = QTextCodec::codecForName("utf-8");
// QString cmdstr="ping 192.168.110.179";//ping 192.168.110.179 -n 2 -w 4000
QString cmdstr=ui->lineEdit_ip->text();
exc.start(cmdstr);//执行ping
exc.waitForFinished(-1);//等待ping完成
QString outstr=codec->toUnicode(exc.readAll());//获取ping结果
ui->textBrowser->setText(outstr);

//返回不等于-1,说明ping结果包含"往返行程的估计时间"字段,则说明ping成功,网络可达;等于-1,表示没有此字段,说明ping不通
if((outstr.indexOf("往返行程的估计时间"))!=-1)
{
qDebug("ping通\n");
}else
{
qDebug("ping失败\n");
}


}
*/
void Widget::Myping()
{
qDebug()<<QStringLiteral("开始点击");
ui->textBrowser->clear();
ui->textBrowser->setText(QStringLiteral("请等待"));
ui->textBrowser->update();
QProcess myProcess(this);
QString program = "C:/Windows/System32/cmd.exe";
QStringList arguments;
QString ipaddr;
// 正则表达式限制输入

ipaddr = ui->lineEdit_ip->text();
//用户输入的内容
QString message = "ping " + ipaddr;
//和ping命令拼接,字符串的拼接直接+链接就可
qDebug()<<message;
//将拼接后的结果在应用程序输出的位置打印一下
// 用于占位
//arguments=ui->lineEdit_ip->setInputMask("000.000.000.000; ");
//arguments <<"/c" <<"ping www.baidu.com";
arguments <<"/c" <<message;


myProcess.start(program,arguments);

while (myProcess.waitForFinished(100) == false) {
QByteArray qByteRead = myProcess.readAllStandardOutput();
if (!qByteRead.isEmpty()) {
ui->textBrowser->append(QString::fromLocal8Bit(qByteRead));
repaint();
}
}
QByteArray qByteRead = myProcess.readAllStandardOutput();
ui->textBrowser->append(QString::fromLocal8Bit(qByteRead));

qDebug()<<QString::fromLocal8Bit(qByteRead);
//输出应用程序输出上
qDebug()<<"结束点击";


}

Widget::~Widget()
{
delete ui;
}

QT实现ping命令_ping

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
Qt绘图 2023-02-03 23:51:47