Qt-获取主机网络信息之QHostInfo

时间:2022-12-15 22:06:01

Qt中提供了几个用于获取主机网络信息的类,包括QHostInfo、QHostAddress、QNetworkInterface以及QNetworkAddress.在本节中,我将在这里总结QHostInfo类的用法,其他的类的介绍将会在后续文章中给出。

注:更详细的内容,请参看官方文档。

QHostInfo类提供了一系列用于主机名查询的静态函数。

QHostInfo类利用操作系统所提供的查询机制来查询与特定主机名相关联的主机的IP地址,或者与一个IP地址相关联的主机名。这个类提供了两个静态的便利函数:一个工作在异步方式下,并且一旦找到主机就发射一个信号;另一个以阻塞方式工作,并且最终返回一个QHostInfo对象。

要使用异步方式查询主机的IP地址,则调用lookupHost(),它需要传递3个参数,依次是主机名或IP地址、接收对象和接收槽函数,并且返回一个查询ID。你可以通过调用以查询ID为参数的abortHostLookup()方法的来中止查询。

当得到查询结果后就会调用此槽函数。查询结果被存储到一个QHostInfo对象中。可以通过调用addresses()方法来获得主机的IP地址列表,同时可以通过调用hostName()方法来获得查询的主机名。

如果查询失败,error()返回发生错误的类型。errorString()给出一个人们能够读懂的查询错误描述。

 #include "mainwindow.h"
#include <QDebug> MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QHostInfo::lookupHost("www.baidu.com",
this, SLOT(printResult(QHostInfo)));
}
void MainWindow::printResult(QHostInfo result)
{
qDebug() << result.hostName();
QList<QHostAddress> addrList = result.addresses();
if (!addrList.isEmpty())
{
for (int i = ; i < addrList.size(); i++)
{
qDebug() << addrList.at(i);
}
}
}

如果你想要使用阻塞方式查询,则使用QHostInfo::fromName()函数。查询给定主机名对应的IP地址。此函数在查询期间将阻塞,这意味着程序执行期间将挂起直到返回查询结果。返回的查询结果存储在一个QHostInfo对象中。

如果你传递一个字面IP地址给name来替代主机名,QHostInfo将搜索这个IP地址对应的域名 (ie. QHostInfo将执行一个反向查询)。如果成功,则返回的QHostInfo对象中将包含对应主机名的域名和IP地址。

 #include "mainwindow.h"
#include <QDebug> MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QHostInfo info = QHostInfo::fromName("www.baidu.com");
qDebug() << info.addresses();
}

参考资料:《获取网络接口信息》-MyNote

《Qt网络之获取本机网络信息》-51CTO

Qt-获取主机网络信息之QHostInfo的更多相关文章

  1. windows主机网络信息获取程序设计

    掌握windows系统获取网络信息的各种API函数的功能与调用方法,掌握设计程序显示获取到相关网络信息的方法,掌握网络字节数据与主机字节数据之间的转换.掌握这些API函数调用的错误处理方法. 利用本地 ...

  2. Qt 获取usb设备信息 hacking

    /************************************************************************** * Qt 获取usb设备信息 hacking * ...

  3. c&sol;c&plus;&plus; 网络编程 UDP 用if&lowbar;nameindex和ioctl取得主机网络信息

    网络编程 UDP 用if_nameindex和ioctl取得主机网络信息 getifaddrs函数取得的东西太多了,如果只想取得网卡名字和网卡编号可以用下面的2个函数. 1,if_nameindex ...

  4. c&sol;c&plus;&plus; 网络编程 UDP 主机网络信息取得

    网络编程 UDP 主机网络信息取得 1,if_nametoindex 通过网卡名字取得网卡编号 2,if_indextoname 通过网卡编号取得网卡名字 #include <stdio.h&g ...

  5. Qt-获取主机网络信息之QHostAddress

    QHostAddress类提供一个IP地址. 这个类提供一种独立于平台和协议的方式来保存IPv4和IPv6地址. QHostAddress通常与QTcpSocket,QTcpServer,QUdpSo ...

  6. 使用gethostname&lpar;&rpar;函数和gethostbyname&lpar;&rpar;函数获取主机相关信息

    gethostname() : 返回本地主机的标准主机名. 原型如下: #include <unistd.h> int gethostname(char *name, size_t len ...

  7. 用ioctl获取无线网络信息 &sol;usr&sol;&sol;include&sol;linux&sol;wireless&period;h

    1.UNIX Network Programming环境搭建 Unix NetWork Programming――环境搭建(解决unp.h等源码编译问题) http://blog.csdn.net/a ...

  8. Qt-获取主机网络信息之QNetworkInterface

    QNetworkInterface类提供了一个主机IP地址和网络接口的列表. QNetworkInterface表示了当前程序正在运行时与主机绑定的一个网络接口.每个网络接口可能包含0个或者多个IP地 ...

  9. Qt-获取主机网络信息之QNetworkAddressEntry

    QNetworkAddressEntry类存储了一个网络接口所支持的一个IP地址,同时还有与之相关的子网掩码和广播地址. 每个网络接口可以包含0个或多个IP地址,这些IP地址可以分别关联一个子网掩码和 ...

随机推荐

  1. 百度地图-省市县联动加载地图 分类: Demo JavaScript 2015-04-26 13&colon;08 530人阅读 评论&lpar;0&rpar; 收藏

    在平常项目中,我们会遇到这样的业务场景: 客户希望把自己的门店绘制在百度地图上,通过省.市.区的选择,然后加载不同区域下的店铺位置. 先看看效果图吧: 实现思路: 第一步:整理行政区域表: 要实现通过 ...

  2. Perst常用命令

    Perst我使用的版本是4, 几乎支持所有的.net环境, 而且效率很高,比较稳定. 使用方法: 1:引用相应dll 2: 创建数据结构 public class Cp_struct : Persis ...

  3. Python 之 【re模块的正则表达式学习】

    摘要: re模块包括操作正则表达式的函数,一些工作中都需要用到,现在说明下使用方法. 使用说明: 一,re模块下的函数:            函数             描述 compile(pa ...

  4. STM8s窗口看门狗

    看看窗口看门狗的框图 从图里看出产生复位信号有2个方式: 1 WDGCR寄存器的T6 由1变0,也就是从此寄存器的值从0x40变成0x3F会产生复位信号: 2 当寄存器WDGCR的值大于WDGWR的时 ...

  5. ADF&lowbar;Database Develop系列3&lowbar;通过UML进行数据库开发之将Database Diagram转为Class Diagram

    2013-05-01 Created By BaoXinjian

  6. 我是如何学习 Linux 的

    为何要学习 Linux? 这个问题可能困扰着很多 Linux 初学者和爱好者,其实我也说不上来为何要学习 Linux,可能最实在的理由就是—-Linux 相关工作岗位很多.在“见到” Linux 的第 ...

  7. MYSQL基础03&lpar;日期函数&rpar;

    工作中对日期的处理是经常遇到的,需求可能多种多样,因此重点介绍. 1.获取当前日期 select NOW() -- 结果:2015-10-28 22:41:11 ),NOW() -- 结果 2015- ...

  8. Excel 宏

    实现1到40行的第一列 ,全部 累加一个字符串 A1 Sub Macro1() Dim i As IntegerFor i = 1 To 40Sheets(1).Cells(i, 1).Value = ...

  9. Js控制iphone端的input&sol;textarea元素失去焦点时隐藏键盘

    原文http://www.it165.net/pro/html/201404/12672.html function objBlur(obj, time){ if(typeof obj != 'str ...

  10. 201521123035《Java程序设计》第十周实验总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 1.finally 题目4-2 1.1 截图你的提交结果(出 ...