5

QT实现ping命令

 1 year ago
source link: https://blog.51cto.com/u_15515702/5783695
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

QT实现ping命令

精选 原创

五个板栗 2022-10-21 16:26:52 博主文章分类:Qt ©著作权

文章标签 正则表达式 ping QT 文章分类 C/C++ 编程语言 yyds干货盘点 阅读数180

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QDebug>
#include <QProcess>
#include <QTextCodec>
#include <QRegExpValidator>
#include <QStringList>
#include <QString>

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命令_QT
  • 收藏
  • 1评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK