zl程序教程

您现在的位置是:首页 >  工具

当前栏目

QT获取IP地址

Qt 获取 IP地址
2023-09-14 09:07:01 时间

1、.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QHostInfo>
 
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
 
private:
    Ui::MainWindow *ui;
    void lookedUp(const QHostInfo &host);
    QString returnOutIP();
    QString GetHtml(QString url);
    QString GetNetIP(QString webCode);
};
#endif // MAINWINDOW_H

2、获取计算机名

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtNetwork>
 
/*外网ip*/
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QEventLoop>
 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //计算机名字
    QString localHostName = QHostInfo::localHostName();
    qDebug() <<"localHostName: "<<localHostName;
}
 
MainWindow::~MainWindow()
{
    delete ui;
}

运行输出的信息:localHostName: “DESKTOP-UMXXXXX”

3、IPv4、IPV6 地址

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtNetwork>
 
/*外网ip*/
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QEventLoop>
 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //计算机名字
    QString localHostName = QHostInfo::localHostName();
    //qDebug() <<"localHostName: "<<localHostName;
    
    //IPv6 地址
    QHostInfo info = QHostInfo::fromName(localHostName);
    qDebug() <<"IP Address: "<<info.addresses();
    
    //IPV4 地址
    QHostAddress address;
    info.addresses();
    if(address.protocol() == QAbstractSocket::IPv4Protocol)
       qDebug() << address.toString();
 
    if(address.protocol() == QAbstractSocket::IPv6Protocol)
       qDebug() << address.toString();
 
 
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 

运行输出的信息:IP Address: (QHostAddress(“fe80::XXXX:XXXX:XXXX:XXXX%XX”), QHostAddress(“fe80::XXXX:XXXX:XXXX:XXXX%XX”), QHostAddress(“fe80::XXXX:XXXX:XXXX:XXXX%XX”), QHostAddress(“fe80::XXXX:XXXX:XXXX:XXXX%XX”), QHostAddress(“192.168.XXX.X”), QHostAddress(“192.168.XXX.X”), QHostAddress(“192.168.XXX.X”), QHostAddress(“192.168.XXX.X”))

4、外网地址

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtNetwork>
 
/*外网ip*/
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QEventLoop>
 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //获取公网IP
    QString qstr=returnOutIP();
    qDebug() << qstr;
 
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::lookedUp(const QHostInfo &host)
{
    qDebug() << host.addresses().first().toString();
}
 
QString MainWindow::returnOutIP()
 
{
 
    return GetNetIP(GetHtml("http://www.3322.org/dyndns/getip"));
 
}
 
 
 
QString MainWindow::GetHtml(QString url)
 
{
 
    QNetworkAccessManager *manager = new QNetworkAccessManager();
 
    QNetworkReply *reply = manager->get(QNetworkRequest(QUrl(url)));
 
    QByteArray responseData;
 
    QEventLoop eventLoop;
 
    QObject::connect(manager, SIGNAL(finished(QNetworkReply *)), &eventLoop, SLOT(quit()));
 
    eventLoop.exec();
 
    responseData = reply->readAll();
 
    return QString(responseData);
 
}
 
QString MainWindow::GetNetIP(QString webCode)
 
{
 
    QString tmp = webCode.split("[").last();
    return tmp.split("]").first();
 
}

运行输出的信息:“123.XXX.XXX.XXX\n”
链接:
https://blog.csdn.net/qq_37529913/article/details/107970461