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地址可以分别关联一个子网掩码和 ...
随机推荐
- Tomcat启用HTTPS(生成证书、配置Tomcatserver)
Windows下的配置: 第一步:为server生成证书 使用keytool 为 Tomcat 生成证书.假定目标机器的域名是" localhost ". keystore 文件存 ...
- JFinal使用笔记1-部署demo项目到本地tomcat
http://my.oschina.net/u/173975/blog/110261 尝试用JFinal开发个开源的社团管理系统,把开发过程中遇到的问题和解决办法记下来,以供参考. 部署jfinal_ ...
- 360开源的类Redis存储系统:Pika
Pika 是 360 DBA 和基础架构组联合开发的类 Redis 存储系统,完全支持 Redis 协议,用户不需要修改任何代码,就可以将服务迁移至 Pika.有维护 Redis 经验的 DBA 维护 ...
- 如何打开“USB调试”模式?
请首先确认您的系统版本, 点击「设置」-「关于手机」查看您当前的手机版本号. 如果您使用的是 Android 3.2及以下系统,请按以下步骤操作: STEP1:在应用列表选择「设置」进入系统设置菜单: ...
- Linux批量替换文件内容
问题描述:现在需要将rack1目录下*.send文件中的"-ip="替换成“-localIp=10.0.0.1/n-ip=” 刚才那个批量文本内容替换,只能替换内存中的内容,并不会 ...
- SQL中N $ # @的作用
declare @sql nvarchar(4000) set @sql= N'select @TotalRecords=count(*) from ' + N'(' + @sqlFullPopula ...
- 项目开发笔记-传单下发 名片替换 文件复制上传/html静态内容替换/json解析/html解析
//////////////////////////// 注意: 此博客是个人工作笔记 非独立demo////////////////////////////////// .............. ...
- Linux - 查看用户登录记录
有关用户登录的信息记录在 utmp(/var/run/utmp).wtmp(/var/log/wtmp).btmp(/var/log/btmp) 和 lastlog(/var/log/lastlog) ...
- Windows Azure入门教学:使用Blob Storage
对于.net开发人员,这是一个新的领域,但是并不困难.本文将会介绍如何使用Blob Storage.Blob Storage可以看做是云端的文件系统.与桌面操作系统上不同,我们是通过REST API来 ...
- ASP.NET MVC 5入门小结
1.前言 本人在读研究僧一只,老师那里使用的是ASP.NET的Web Forms技术,真的要感慨一句:尼玛太老旧了!之前耳闻Python的高效开发,曾经学过一点Python的Django ...