一、描述
QHostInfo 查找与主机名关联的 IP 地址,或与 IP 地址关联的主机名。
二、类型成员
1、QHostInfo::HostInfoError:此枚举描述了尝试解析主机名时可能发生的各种错误。
- NoError:无错误。
- HostNotFound:找不到主机的 IP 地址。
- UnknownError:出现未知错误。
三、成员函数
1、[static] void abortHostLookup(int id)
lookupHost() 查询主机信息时,会返回一个查询 ID。使用ID终止主机查找。
2、QList<QHostAddress> addresses()
返回与 hostName() 关联的 IP 地址列表。QHostAddress
QHostInfo info = QHostInfo::fromName(QHostInfo::localHostName());
qDebug() <<info.addresses();
QHostInfo info = QHostInfo::fromName("www.baidu.com");
qDebug() <<info.addresses();
应用:输出IPv4的地址
QHostInfo info;
foreach(QHostAddress address,info.addresses())
{
if(address.protocol() == QAbstractSocket::IPv4Protocol)
qDebug() << address.toString();
}
3、QHostInfo::HostInfoError error()
返回主机名查找失败时发生的错误类型。
4、QString errorString()
如果查找失败,此函数将返回可读的错误描述。否则返回“"Unknown error”。
5、[static] QHostInfo fromName(const QString &name)
查找给定主机名的 IP 地址。查找期间的功能块意味着程序的执行将阻塞。如果IP字符串 地址传递给 name,QHostInfo 将搜索 IP 的域名。(见上面第二个函数)
6、QString hostName()
返回查找的 IP 地址的主机的名称。
QHostInfo info = QHostInfo::fromName("www.baidu.com");
qDebug() <<info.hostName();
QHostInfo info = QHostInfo::fromName("192.168.0.102");
qDebug() <<info.hostName()<<info.errorString();
7、[static] QString localDomainName()
返回本机的 DNS 域。(与在 Windows 网络中找到的域名无关)。
8、[static] QString localHostName()
如果已配置,则返回此机器的主机名。此函数返回与 QSysInfo::machineHostName() 相同的值。
9、[static] int lookupHost(const QString &name, QObject *receiver, const char *member)
[static] template <typename Functor> int lookupHost(const QString &name, Functor functor)
查找与主机名 name 关联的 IP 地址,并返回查找的 ID。当查找有结果将触发槽函数。如果IP字符串 地址传递给 name,QHostInfo 将搜索 IP 的域名,(即QHostInfo 将执行反向查找)。成功后,生成的 QHostInfo 将包含主机名的解析域名和 IP 地址。
int id{-1};
id = QHostInfo::lookupHost("www.baidu.com",[&id](QHostInfo info)
{
qDebug()<<id<<info.addresses();
});