QT应用编程: 域名解析(域名转IP)
Posted DS小龙哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT应用编程: 域名解析(域名转IP)相关的知识,希望对你有一定的参考价值。
一、环境介绍
Qt: 5.12.6
操作系统: win10 (64位)
二、软件效果与功能介绍
功能: 域名解析(域名转IP)
三、核心代码
3.1 widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
/*
工程: SmartHome
日期: 2021-04-26
作者: DS小龙哥
环境: win10 QT5.12.6 MinGW32
功能: 日志显示
*/
void Widget::Log_Text_Display(QString text)
{
QPlainTextEdit *plainTextEdit_log=ui->plainTextEdit_log;
//设置光标到文本末尾
plainTextEdit_log->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor);
//当文本数量超出一定范围就清除
if(plainTextEdit_log->toPlainText().size()>1024*4)
{
plainTextEdit_log->clear();
}
plainTextEdit_log->insertPlainText(text);
//移动滚动条到底部
QScrollBar *scrollbar = plainTextEdit_log->verticalScrollBar();
if(scrollbar)
{
scrollbar->setSliderPosition(scrollbar->maximum());
}
}
//当解析成功域名后,会调用lookedUp槽函数
void Widget::lookedUp(const QHostInfo &host)
{
if (host.error() != QHostInfo::NoError) {
Log_Text_Display(host.errorString()+"\\n");
return;
}
foreach (QHostAddress address, host.addresses())
{
Log_Text_Display(address.toString()+"\\n");
}
}
/*
工程: IP_Addr_Analysis
日期: 2021-06-01
作者: DS小龙哥
环境: win10 QT5.12.6 MinGW32
功能: 域名解析
*/
void Widget::on_pushButton_ip_get_clicked()
{
//先调用 命令nslookup解析域名,再调用QHostInfo解析,有些域名QHostInfo解析不了。
//多此一举使用QHostInfo的原因是,懒得解析字符串,QHostInfo信号里直接读取IP地址。
QProcess process;
process.start(QString("nslookup %1").arg(ui->lineEdit_ip_name->text()));
process.waitForFinished(5000);
Log_Text_Display(process.readAll()+"\\n");
QHostInfo::lookupHost(ui->lineEdit_ip_name->text(),this, SLOT(lookedUp(QHostInfo)));
}
/*
工程: IP_Addr_Analysis
日期: 2021-06-01
作者: DS小龙哥
环境: win10 QT5.12.6 MinGW32
功能: 清除数据
*/
void Widget::on_pushButton_clean_clicked()
{
ui->plainTextEdit_log->clear();
}
3.2 widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QHostInfo>
#include <QScrollBar>
#include <QPlainTextEdit>
#include <QProcess>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void lookedUp(const QHostInfo &host);
void Log_Text_Display(QString text);
void on_pushButton_ip_get_clicked();
void on_pushButton_clean_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
以上是关于QT应用编程: 域名解析(域名转IP)的主要内容,如果未能解决你的问题,请参考以下文章
nginx转跳问题,nginx默认接受所有解析过来的域名,然后转跳到指定的IP