QHostInfo类
QHostInfo类提供了用于主机名查找的静态功能。更多...
头文件 | #include <QHostInfo> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake | QT += network |
- 包括继承成员在内的所有成员列表
- QHostInfo是网络编程API的一部分。
注意:此类中所有函数都是可重入的。
公共类型
枚举 | HostInfoError { NoError, HostNotFound, UnknownError } |
公共函数
QHostInfo(int id = -1) | |
QHostInfo(const QHostInfo &other) | |
QHostInfo(QHostInfo &&other) | |
~QHostInfo() | |
QList<QHostAddress> | addresses() const |
QHostInfo::HostInfoError | error() const |
QString | errorString() const |
QString | hostName() const |
int | lookupId() const |
void | setAddresses(const QList<QHostAddress> &addresses) |
void | setError(QHostInfo::HostInfoError error) |
void | setErrorString(const QString &str) |
void | setHostName(const QString &hostName) |
void | setLookupId(int id) |
void | swap(QHostInfo &other) |
QHostInfo & | operator=(const QHostInfo &other) |
QHostInfo & | operator=(QHostInfo &&other) |
静态公共成员
void | abortHostLookup(int id) |
QHostInfo | fromName(const QString &name) |
QString | localDomainName() |
QString | localHostName() |
int | lookupHost(const QString &name, const QObject *receiver, const char *member) |
int | lookupHost(const QString &name, const QObject *context, Functor functor) |
int | lookupHost(const QString &name, Functor &&functor) |
详细描述
QHostInfo查找与主机名相关联的IP地址(或与IP地址相关联的主机名)。该类提供两个静态方便函数:一个异步工作并发出信号以找到主机,另一个阻塞并返回一个QHostInfo对象。
要异步查找主机的IP地址,请调用 lookupHost() 函数,它接受主机名或IP地址、一个接收器对象和一个槽签名作为参数,并返回一个ID。您可以通过调用带有查找ID的 abortHostLookup() 来取消查找。
示例
// To find the IP address of qt-project.org QHostInfo::lookupHost("qt-project.org", this, &MyWidget::printResults); // To find the host name for 4.2.2.1 QHostInfo::lookupHost("4.2.2.1", this, &MyWidget::printResults);
当结果准备好时将调用槽。结果存储在 QHostInfo 对象中。调用 addresses() 获取为主机提供的IP地址列表,并调用 hostName() 获取已查找的主机名。
如果查找失败,error() 将返回发生的错误类型。errorString() 提供了对查找错误的可读描述。
如果您想要阻塞查找,请使用 QHostInfo::fromName() 函数
QHostInfo 通过IDNA和Punycode标准支持国际化域名(IDNs)。
要获取本地主机的名称,请使用静态的 QHostInfo::localHostName() 函数。
QHostInfo 使用操作系统提供的机制进行查找。根据 RFC 6724,无法保证返回所有域名或主机的IP地址。
注意:从Qt 4.6.1开始,QHostInfo在查找DNS时使用多个线程而不是一个专用的DNS线程。这提高了性能,但也将使用 lookupHost() 时与Qt之前版本相比的信号发射顺序更改。
注意:从Qt 4.6.3开始,QHostInfo使用一个小的内部60秒DNS缓存来提高性能。
另请参阅:QAbstractSocket、RFC 3492 和 RFC 6724。
成员类型文档
枚举 QHostInfo::HostInfoError
此枚举描述了在尝试解析主机名时可能发生的各种错误。
常量 | 值 | 描述 |
---|---|---|
QHostInfo::NoError | 0 | 查找成功。 |
QHostInfo::HostNotFound | 1 | 找不到主机的IP地址。 |
QHostInfo::UnknownError | 2 | 发生未知错误。 |
成员函数文档
[ explicit ]
QHostInfo::QHostInfo(int id = -1)
使用查找ID id 构造一个空的宿主信息对象。
另请参阅:lookupId()。
QHostInfo::QHostInfo(const QHostInfo &other)
从 other 构造一个副本。
[ noexcept ]
QHostInfo::QHostInfo(QHostInfo &&other)
从 other 中移动构造新的 QHostInfo。
注意:移动的源对象 other 将处于部分形成的状态,在这种情况下,唯一有效的操作是销毁和分配新值。
[ noexcept ]
QHostInfo::~QHostInfo()
销毁宿主信息对象。
[静态]
void QHostInfo::abortHostLookup(int id)
取消具有 ID id 的主机查找,该 ID 由 lookupHost() 返回。
另请参阅 lookupHost() 和 lookupId()。
QList<QHostAddress> QHostInfo::addresses() const
返回与 hostName 关联的 IP 地址列表。此列表可能为空。
示例
QHostInfo info; ... if (!info.addresses().isEmpty()) { QHostAddress address = info.addresses().first(); // use the first IP address }
另请参阅 setAddresses(),hostName() 和 error()。
QHostInfo::HostInfoError QHostInfo::error() const
如果在主机名查找失败时返回错误类型;否则返回 NoError。
另请参阅 setError() 和 errorString()。
QString QHostInfo::errorString() const
如果在查找失败,此函数返回错误的人类可读描述;否则返回 "未知错误"。
另请参阅 setErrorString() 和 error()。
[静态]
QHostInfo QHostInfo::fromName(const QString &name)
查找给定主机 name 的 IP 地址(地址)。函数在查找过程中阻塞,这意味着程序执行将被挂起,直到查找结果准备就绪。将查找结果返回到 QHostInfo 对象中。
如果您将文字 IP 地址传递给 name 而不是主机名,QHostInfo 将搜索 IP 的域名(即,QHostInfo 将执行 反向 查找)。如果成功,返回的 QHostInfo 将包含解析的域名和主机的 IP 地址。
另请参阅 lookupHost()。
QString QHostInfo::hostName() const
返回查找 IP 地址的主机名。
另请参阅 setHostName() 和 localHostName()。
[静态]
QString QHostInfo::localDomainName()
返回此机器的 DNS 域名。
注意: DNS 域名与在 Windows 网络中找到的域名名称没有关系。
另请参阅 hostName()。
[静态]
QString QHostInfo::localHostName()
返回已配置的机器的主机名,如果有的话。请注意,主机名不保证是全球唯一的,特别是如果它们是自动配置的。
此函数不保证返回的主机名是完全限定域名(FQDN)。对于此,请使用 fromName() 将返回的名称解析为 FQDN。
此函数返回的与 QSysInfo::machineHostName() 相同。
另请参阅 hostName() 和 localDomainName().
[静态]
int QHostInfo::lookupHost(const QString &名称, const QObject *接收器, const char *成员)
查找与主机名 名称 相关联的 IP 地址(复数),并返回查找的 ID。当查找结果准备好了,接收器 中的槽或信号 成员 就会被调用,并带有 QHostInfo 对象参数。然后可以检查 QHostInfo 对象以获取查找结果。
查找通过单个函数调用执行,例如
QHostInfo::lookupHost("www.kde.org", this, &MyWidget::lookedUp);
槽的实现打印出查找返回的地址的基本信息,或者在失败时报告错误
void MyWidget::lookedUp(const QHostInfo &host) { if (host.error() != QHostInfo::NoError) { qDebug() << "Lookup failed:" << host.errorString(); return; } const auto addresses = host.addresses(); for (const QHostAddress &address : addresses) qDebug() << "Found address:" << address.toString(); }
如果你传递一个字面量 IP 地址而不是主机名给 名称,QHostInfo 将寻找该 IP 的域名(即,QHostInfo 将执行 反向 查找)。在成功的情况下,结果的 QHostInfo 将包含解析的域名和宿主名的 IP 地址。例如
QHostInfo::lookupHost("4.2.2.1", this, &MyWidget::lookedUp);
注意: 如果你使用 lookupHost() 启动多个请求,无法保证信号发出的顺序。
注意: 在 Qt 6.7 之前的版本中,此函数将 接收器 作为非 const 的 QObject*
来处理。
另请参阅 abortHostLookup(), addresses(), error() 和 fromName().
[静态]
模板 <typename Functor> int QHostInfo::lookupHost(const QString &名称, const QObject *上下文, Functor 函数)
这是一个重载函数。
查找与主机名 名称 相关联的 IP 地址(复数),并返回查找的 ID。当查找结果准备好了,函数 就会被调用,并带有 QHostInfo 对象参数。然后可以检查 QHostInfo 对象以获取查找结果。
如果在查找完成后销毁 上下文,函数 将不会被调用。The function 将在 context 的线程中运行。该线程必须有一个运行的 Qt 事件循环。
以下是该函数的另一种签名
在这种情况下,当查找结果准备好了,接收器 中的槽或信号 function
就会被调用,并带有 QHostInfo 对象参数。然后可以检查 QHostInfo 对象以获取查找结果。
注意: 如果你使用 lookupHost() 启动多个请求,无法保证信号发出的顺序。
另请参阅 abortHostLookup(), addresses(), error() 和 fromName().
[静态]
模板 <typename Functor> int QHostInfo::lookupHost(const QString &名称, Functor &&function)
这是一个重载函数。
查找与主机名 名称 相关联的 IP 地址(复数),并返回查找的 ID。当查找结果准备好了,函数 就会被调用,并带有 QHostInfo 对象参数。然后可以检查 QHostInfo 对象以获取查找结果。
function 将在调用 lookupHost 的线程中运行;该线程必须有一个运行的 Qt 事件循环。
注意: 如果你使用 lookupHost() 启动多个请求,无法保证信号发出的顺序。
另请参阅 abortHostLookup(), addresses(), error() 和 fromName().
int QHostInfo::lookupId() const
返回此查找的 ID。
另请参阅 setLookupId(), abortHostLookup() 和 hostName().
void QHostInfo::setAddresses(const QList<QHostAddress> &addresses)
将此 QHostInfo 中的地址列表设置为 addresses。
另请参阅 addresses()。
void QHostInfo::setError(QHostInfo::HostInfoError error)
将此 QHostInfo 的错误类型设置为 error。
另请参阅 error() 和 errorString。
void QHostInfo::setErrorString(const QString &str)
如果查找失败,将发生的错误的可读描述设置为 str。
另请参阅 errorString() 和 setError。
void QHostInfo::setHostName(const QString &hostName)
将此 QHostInfo 的主机名设置为 hostName。
另请参阅 hostName()。
void QHostInfo::setLookupId(int id)
将此查找的 ID 设置为 id。
另请参阅 lookupId() 和 lookupHost。
[noexcept]
void QHostInfo::swap(QHostInfo &other)
交换宿主信息 other 和此宿主信息。此操作非常快且不会失败。
QHostInfo &QHostInfo::operator=(const QHostInfo &other)
将 other 对象的数据分配到本主机信息对象中,并返回对此对象的引用。
[noexcept]
QHostInfo &QHostInfo::operator=(QHostInfo &&other)
移动分配 other 到此 QHostInfo 实例。
注意:移动的源对象 other 将处于部分形成的状态,在这种情况下,唯一有效的操作是销毁和分配新值。
© 2024 Qt 公司有限会社。本文档贡献的版权属于其各自的所有者。本文档受 GNU Free Documentation License 版本 1.3 的许可条款约束,由自由软件基金会发布。Qt 和相关的徽标是芬兰以及/或全球的其他国家的 商标,属于 Qt 公司有限会社。所有其他商标均为各自所有者的财产。