C++ Qt开发:QHostInfo主机地址查询组件

这篇具有很好参考价值的文章主要介绍了C++ Qt开发:QHostInfo主机地址查询组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QHostInfo组件实现对主机地址查询功能。

在Qt网络编程中,QHostInfo是一个强大而灵活的组件,用于获取有关主机的信息,包括主机名、IP地址和域名解析等。通过支持异步查询的机制,它能够在后台获取主机信息,避免阻塞主线程,同时通过信号-槽机制提供查询结果。其多主机查询、可靠的错误处理和与网络环境的适应性,使其成为处理网络应用中主机信息获取的理想选择。

以下是QHostInfo类的一些常用函数的解释:

函数 描述
QHostInfo() 默认构造函数,创建一个空的QHostInfo对象。
QHostInfo(const QHostInfo &other) 拷贝构造函数,根据给定的other对象创建一个新的对象。
QHostInfo &operator=(const QHostInfo &other) 赋值运算符,将other对象的值赋给当前对象。
QHostInfo &swap(QHostInfo &other) 交换两个QHostInfo对象的值。
bool isNull() const 判断QHostInfo对象是否为空,即未进行任何查询。
bool isComplete() const 判断查询是否完成,返回true表示查询已完成,false表示正在进行中。
QList<QHostAddress> addresses() const 返回与主机相关联的IP地址列表。
QString hostName() const 返回主机的名称。
QStringList aliases() const 返回主机的别名列表。
QHostInfo::Error error() const 返回查询时发生的错误。
QString errorString() const 返回与错误代码对应的人类可读的错误字符串。
static QHostInfo fromName(const QString &name) 根据主机名创建QHostInfo对象。
static QHostInfo fromAddress(const QHostAddress &address) 根据IP地址创建QHostInfo对象。
static QHostInfo localHostName() 返回本地主机的QHostInfo对象。
void clear() 清空QHostInfo对象,重置为初始状态。
static void swap(QHostInfo &first, QHostInfo &second) 交换两个QHostInfo对象的值。

这些函数提供了对主机信息的查询、获取和处理的操作。需要注意,很多函数都是通过异步查询的方式获取主机信息的,因此在使用时需要通过信号-槽机制来获取查询结果。

在使用这个模块时,要确保导入QT+=network模块,接着来看该如何实现查询本机IP地址,通过调用QHostInfo::localHostName可以直接获取到本机的主机名,调用QHostInfo::fromName(hostName)可将该主机名转换为对应的HostInfo结构,当具备了这个结构体以后,就可以通过循环遍历addList.count()内的所有记录,并aHost.toString()输出所有的IP地址表,代码如下所示;

// 查询本机IP地址
void MainWindow::on_pushButton_clicked()
{
    // 本地主机名
    QString hostName=QHostInfo::localHostName();
    std::cout << hostName.toStdString() << std::endl;
    ui->lineEdit->setText(hostName);

    // 查询主机IP地址信息
    QHostInfo hostInfo=QHostInfo::fromName(hostName);

    QList<QHostAddress> addList=hostInfo.addresses();
    if (!addList.isEmpty())
    for (int i=0;i<addList.count();i++)
    {
        // 每一项是一个QHostAddress
        QHostAddress aHost=addList.at(i);

        // 判断是否为IPV4
        if(QAbstractSocket::IPv4Protocol==aHost.protocol())
        {
            ui->listWidget->addItem("IPV4 | " + aHost.toString());
        }
        else
        {
            ui->listWidget->addItem("IPV6 | " + aHost.toString());
        }
    }
}

运行后读者可通过点击查询数据按钮实现对本机IP地址的获取,输出效果如下图所示;

C++ Qt开发:QHostInfo主机地址查询组件

QHostInfo组件既可以查询自身IP地址信息,也可以实现对特定域名的IP解析,通过使用QHostInfo::lookupHost则可以实现查询特定主机的地址信息,该函数需要传入一个回调,如下所示我们在回调函数内查询主机所有的IP地址并输出,其实现原理与上述方法相同。

void MainWindow::lookedUpHostInfo(const QHostInfo &host)
{
    // 每一项是一个QHostAddress
    QList<QHostAddress> addList=host.addresses();
    if (!addList.isEmpty())
    for (int i=0;i<addList.count();i++)
    {
        QHostAddress aHost=addList.at(i);

        // 判断是否为IPV4
        if(QAbstractSocket::IPv4Protocol==aHost.protocol())
        {
            ui->listWidget_2->addItem("IPV4 | " + aHost.toString());
        }
        else
        {
            ui->listWidget_2->addItem("IPV6 | " + aHost.toString());
        }
    }
}

在查询时只需要通过lookupHost调用即可,如下代码所示;

void MainWindow::on_pushButton_2_clicked()
{
    // 主机名
    QString hostname=ui->lineEdit_2->text();
    QHostInfo::lookupHost(hostname,this,SLOT(lookedUpHostInfo(QHostInfo)));
}

运行后读者可通过点击查询数据按钮实现对特定域名的IP地址获取,输出效果如下图所示;

C++ Qt开发:QHostInfo主机地址查询组件文章来源地址https://www.toymoban.com/news/detail-837870.html

到了这里,关于C++ Qt开发:QHostInfo主机地址查询组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 本机DNS服务器地址查询

    一.方法一 1、点击电脑左下角的开始图标,然后点击“运行”,输入cmd命令,点击确定。 2、在打开的命令运行窗口中,在下面输入ipconfig /all ,之后按回车键。 3、显示出本机的DNS服务器地址 二.方法二 1.在右下角的无线网络图标上,点击右键,点击“网络和Internet设置”

    2024年02月13日
    浏览(41)
  • Mac查询本机ip地址

    Mac系统版本和网络配置不同,可能会有一些细微差别。         并回车,在输出的信息中,查找“inet”或“inet6”字样,后面跟着的数字就是你的IP地址,然后在输出中查找以 “inet “ 或 “inet6 “ 开头的行,这些行后面跟着的就是对应的IP地址。 (1)、查看特定网络接

    2024年01月23日
    浏览(36)
  • 电脑IP地址查询,3个实用方法!

    案例:电脑IP地址怎么查询 【请问有没有朋友知道电脑IP地址怎么查询呀?想看看我的IP地址却不知道该怎么查询,哪位友友可以帮帮我!】 在互联网世界中,IP地址是一种用于标识设备(如电脑、手机等)在网络中唯一位置的地址。了解电脑的IP地址对于 网络连接、网络安全

    2023年04月20日
    浏览(24)
  • layui实现地址下拉框模糊查询

    注意:千万不要少 lay-search 控制器中 service层

    2024年01月18日
    浏览(25)
  • 网络运维系列:网络出口IP地址查询

    在日常研发的工作过程中很少会需要了解自己的网络出口的IP地址是多少,网络出口IP地址和机器IP地址不是同一个概念,那具体什么情况下会需要知道自己的网络出口IP地址呢? 一般在与外部机构进行安全访问的情况下,机构会将我们的IP地址或是IP段添加到防火墙的白名单中

    2024年02月17日
    浏览(25)
  • 自己电脑服务器地址的查询办法

    方法一:使用快捷指令:“WIN”+“R” 1.同时按住“ WIN” 和 “ R” 键,弹出以下界面,输入:cmd;  2.输入:ipconfig/all;  3.IPv4 地址: 10.102.128.83(首选),即为服务器地址。(温馨提示:断网/重启的情况下,服务器地址都可能会发生变化,需要远程连接的小伙伴,记得及时查

    2024年02月16日
    浏览(30)
  • 查询自己的IP地址(内网和外网)

    查询自己的内网IP和外网IP的方法,以及判断是否直接连接到公网 本方法使用命令行,无需其他软件 内网IP,即局域网IP: 打开cmd窗口,输入 ipconfig 后回车 IPv4地址一栏下即为内网IP,我的电脑是192.168.3.19 顺便一提,由于我是连接Wifi上网的,这里也可以看到路由器在这一内网

    2023年04月27日
    浏览(35)
  • 网络篇——路由器组网,根据MAC地址查询ip

    一、背景与需求 1.教室布置有交换机,使用网线连接若干台式电脑。  2.教室有几台机器人,每台机器人有自己独立的路由器(腾达F3路由器,局域网ip是192.168.31.1),我们的手机和电脑能够直接连接机器人的路由器WIFI。 机器人内部工控机系统的ip为静态ip(192.168.31.200)。

    2024年02月04日
    浏览(43)
  • SQL SEVER连线查询数据源IP地址及开启SQL的IP地址连线方法

    一般来说本机可以直接 主机名 (例如自己命令LILEI)或者 Localhost, 以及数据库管理器可以只用 . 即可登入,或者 IP地址 。 未设定本机地址说明 已设定本机地址说明 故连接需要“ 服务端IP地址 ” 或 “ @@SERVERNAME ” 4.2 计算机管理-服务和应用程序-SQL配置管理器-SQL网络配置

    2024年02月09日
    浏览(26)
  • 使用DNS查询Web服务器IP地址

    浏览器并不具备访问网络的功能,其最终是 通过操作系统 实现的,委托操作系统访问服务器时提供的并不是浏览器里面输入的域名而是ip地址,因此第一步需要 将域名转换为对应的ip地址 域名:www.baidu.com ip地址是一串数字 计算机通过集线器连接在一起构成一个个子网,子网

    2024年02月07日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包