Qt-获取主机网络信息之QHostInfo
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的更多相关文章
- windows主机网络信息获取程序设计
掌握windows系统获取网络信息的各种API函数的功能与调用方法,掌握设计程序显示获取到相关网络信息的方法,掌握网络字节数据与主机字节数据之间的转换.掌握这些API函数调用的错误处理方法. 利用本地 ...
- Qt 获取usb设备信息 hacking
/************************************************************************** * Qt 获取usb设备信息 hacking * ...
- c/c++ 网络编程 UDP 用if_nameindex和ioctl取得主机网络信息
网络编程 UDP 用if_nameindex和ioctl取得主机网络信息 getifaddrs函数取得的东西太多了,如果只想取得网卡名字和网卡编号可以用下面的2个函数. 1,if_nameindex ...
- c/c++ 网络编程 UDP 主机网络信息取得
网络编程 UDP 主机网络信息取得 1,if_nametoindex 通过网卡名字取得网卡编号 2,if_indextoname 通过网卡编号取得网卡名字 #include <stdio.h&g ...
- Qt-获取主机网络信息之QHostAddress
QHostAddress类提供一个IP地址. 这个类提供一种独立于平台和协议的方式来保存IPv4和IPv6地址. QHostAddress通常与QTcpSocket,QTcpServer,QUdpSo ...
- 使用gethostname()函数和gethostbyname()函数获取主机相关信息
gethostname() : 返回本地主机的标准主机名. 原型如下: #include <unistd.h> int gethostname(char *name, size_t len ...
- 用ioctl获取无线网络信息 /usr//include/linux/wireless.h
1.UNIX Network Programming环境搭建 Unix NetWork Programming――环境搭建(解决unp.h等源码编译问题) http://blog.csdn.net/a ...
- Qt-获取主机网络信息之QNetworkInterface
QNetworkInterface类提供了一个主机IP地址和网络接口的列表. QNetworkInterface表示了当前程序正在运行时与主机绑定的一个网络接口.每个网络接口可能包含0个或者多个IP地 ...
- Qt-获取主机网络信息之QNetworkAddressEntry
QNetworkAddressEntry类存储了一个网络接口所支持的一个IP地址,同时还有与之相关的子网掩码和广播地址. 每个网络接口可以包含0个或多个IP地址,这些IP地址可以分别关联一个子网掩码和 ...
随机推荐
- Android 调用系统的分享[完美实现同一时候分享图片和文字]
android 系统的分享功能 private void share(String content, Uri uri){ Intent shareIntent = new Intent(Intent. ...
- iOS开发——面试笔试精华(四)
面试笔试精华(四) 1. Object-C有多继承吗?没有的话用什么代替? 1> OC是单继承,没有多继承 2> 有时可以用分类和协议来代替多继承 2. ...
- LLBLGen代码生成工具
LLBLGen代码生成工具 下载地址:http://www.llblgen.com/ 最新版本4.2 概述 LLBLGen是一个数据访问的解决方案; 你使用LLBLGen创建实体/域模型,定义了映射和 ...
- 启动和启动和停止MySQL服务停止MySQL服务
1. 启动MySQL服务 启动MySQL服务的命令为: /etc/init.d/mysqld start 命令执行后如图7-5所示,表示启动MySQL服务成功. (点击查看大图)图7-5 启动 ...
- Win7无线网络共享设置方法
http://jingyan.baidu.com/article/4f34706e89bb2ae387b56d0b.html
- 考试宝典-真题园安卓AppV2.1.0新版发布啦,全新界面,全新体验,全面适配Android 5.0&6.0系统!
真题园移动客户端是真题园网 http://www.zhentiyuan.com 旗下的一款学习考试应用App. 1.全新适配Android5.0.6.0系统,重新优化架构网络通信模块. 2.全新清爽U ...
- svn服务器的搭建
subversion是优秀的版本管理工具,下面简单介绍svn服务器和客户端的下载.安装.搭建以及使用 一:下载svn服务器和客户端 1:下载地址服务器下载地址:http://subversion.ap ...
- Java多线程中的join()方法
一.join()方法介绍 join() 定义在Thread.java中.join()方法把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程.比如在线程B中调用了线程A的join( ...
- iis7 php urlrewrite 并隐藏index.php
<rewrite> <rules> <rule name="OrgPage" stopProcessing="true"> ...
- .NET通过调用Office组件导出Word文档
.NET通过调用Office组件导出Word文档 最近做项目需要实现一个客户端下载word表格的功能,该功能是用户点击"下载表格",服务端将该用户的数据查询出来并生成数据到Word ...