Qt 网络编程实战

一.获取主机的网络信息

  1. 需要添加network模块
QT   += core gui network
  1. 主要涉及的类分析

QHostInfo类

  • QHostInfo::localHostName() 获取本地的主机名
  • QHostInfo::fromName(const QString &) 获取指定主机的主机信息 addresses接口

QNetworkInterface类

  • QNetworkInterface::allAddresses() 网卡所有的IP地址
  1. 项目效果

在这里插入图片描述

  1. 源码如下
#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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值