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/c++ 网络编程 UDP 用if_nameindex和ioctl取得主机网络信息

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

  4. c/c++ 网络编程 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()函数和gethostbyname()函数获取主机相关信息

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

  7. 用ioctl获取无线网络信息 /usr//include/linux/wireless.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. CDOJ 1157 数列(seq) 分块+线段树

    数列(seq) Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1157 Desc ...

  2. sql server char nchar nvarchar varchar之間的區別

    char存储固定长度的字符串,最大长度为8000个字节. varchar存储可变长度的字符串.最大长度为8000个字节. nchar存储固定长度的Unicode字符串,最大长度为4000个字符. nv ...

  3. Unescape HTML entities in Javascript Unescape HTML转成html代码

    前言: 在javascript里面动态创建标准dom对象一般使用: var obj = document.createElement('div'); 然后再给obj设置一些属性. 但是,在实际使用过程 ...

  4. Linux中的终端、控制台、tty、pty等概念

    参考:http://news.newhua.com/news1/program_language/2010/623/10623141048745773199BCF0CFH6AKB9930IGCFKHB ...

  5. win7系统升家庭版级为旗舰版的方法

    在使用的便利性上,两者没有太大差别,不过有些高级功能是家庭版所没有的,所以我们很多人都希望升级为旗舰版,那么我们需要重新安装系统吗?显然没有这么麻烦,我们只需要简单的几个步骤即可.   步骤/方法   ...

  6. java_Cookies_1_商品浏览历史记录servlet1

    public class CookiesServlet1 extends HttpServlet { public void doGet(HttpServletRequest request, Htt ...

  7. 如何用 PHPMailer 来发送邮件?

    <?php require_once('mantisbt-1.2.15/library/phpmailer/class.phpmailer.php'); $mail= new PHPMailer ...

  8. Java基础知识强化之IO流笔记69:Properties练习之 判断文件中是否有指定的键,如果有就修改值的案例

    1. 我有一个文本文件(user.txt),我知道数据是键值对形式的,但是不知道内容是什么. 请写一个程序判断是否有"lisi"这样的键存在,如果有就改变其值为"100& ...

  9. IOS中如何显示带有html标签的富文本

    NSString *strHTML = @"<p>你好</p><p>        这是一个例子,请显示</p><p>外加一个ta ...

  10. OVS操作总结

    转载:http://www.aboutyun.com/thread-11777-1-1.html Open vSwitch(下面简称为 OVS)是由 Nicira Networks 主导的,运行在虚拟 ...