一.获取主机的网络信息
- 需要添加network模块
QT += core gui network
- 主要涉及的类分析
QHostInfo类
- QHostInfo::localHostName() 获取本地的主机名
- QHostInfo::fromName(const QString &) 获取指定主机的主机信息 addresses接口
QNetworkInterface类
- QNetworkInterface::allAddresses() 网卡所有的IP地址
- 项目效果
- 源码如下
#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 slots:
//获取主机名
void GetHostName();
//获取IPV4
void GetIPV4();
//获取IPV6
void GetIPV6();
//清除文本内容
void Clear_Text();
//获取指定域名的IP地址
void Get_DefineHost();
void lookedUp(QHostInfo hostInfo);
//主机所有网卡IP地址
void GetAlladdresses();
//所有网卡的网络信息
void GetNetWorkInfo();
private:
void InitConnectSignals();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QHostInfo>
#include<QNetworkInterface>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setWindowTitle("主机的网络信息");
InitConnectSignals();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::GetHostName()
{
//获取当前的主机名
QString hostname = QHostInfo::localHostName();
ui->textEdit->append("当前的主机名为:"+hostname);
}
void MainWindow::GetIPV4()
{
//获取当前的主机名
QString hostname = QHostInfo::localHostName();
//获取指定主机的主机信息
QHostInfo hostinformation = QHostInfo::fromName(hostname);
//Returns the list of IP addresses associated with hostName().
//This list may be empty.
//返回与hostName()相关联的IP地址列表。
//该列表可能为空。
QList<QHostAddress> addrlist = hostinformation.addresses();
ui->textEdit->append("本机的IPV4地址如下:");
if(!addrlist.isEmpty())
{
//for遍历输出
for(int i=0;i<addrlist.size();i++)
{
//protocol是协议的意思
if(addrlist[i].protocol()==QAbstractSocket::IPv4Protocol)
{
ui->textEdit->append(addrlist[i].toString());
}
}
}
}
void MainWindow::GetIPV6()
{
//获取当前的主机名
QString hostname = QHostInfo::localHostName();
//获取指定主机的主机信息
QHostInfo hostinformation = QHostInfo::fromName(hostname);
//Returns the list of IP addresses associated with hostName().
//This list may be empty.
//返回与hostName()相关联的IP地址列表。
//该列表可能为空。
QList<QHostAddress> addrlist = hostinformation.addresses();
ui->textEdit->append("本机的IPV6地址如下:");
if(!addrlist.isEmpty())
{
//for遍历输出
for(int i=0;i<addrlist.size();i++)
{
//protocol是协议的意思
if(addrlist[i].protocol()==QAbstractSocket::IPv6Protocol)
{
ui->textEdit->append(addrlist[i].toString());
}
}
}
}
void MainWindow::Clear_Text()
{
ui->textEdit->clear();
}
void MainWindow::Get_DefineHost()