QHostAddress 类提供 IP 地址。 更多...
头: | #include <QHostAddress> |
CMake: |
find_package(Qt6 COMPONENTS Network REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
flags | ConversionMode |
enum | ConversionModeFlag { StrictConversion, ConvertV4MappedToIPv4, ConvertV4CompatToIPv4, ConvertLocalHost, ConvertUnspecifiedAddress, TolerantConversion } |
enum | SpecialAddress { Null, LocalHost, LocalHostIPv6, Broadcast, AnyIPv4, …, Any } |
QHostAddress (QHostAddress::SpecialAddress address ) | |
QHostAddress (const QHostAddress & address ) | |
QHostAddress (const QString & address ) | |
QHostAddress (const sockaddr * sockaddr ) | |
QHostAddress (const Q_IPV6ADDR & ip6Addr ) | |
QHostAddress (const quint8 * ip6Addr ) | |
QHostAddress (quint32 ip4Addr ) | |
QHostAddress () | |
QHostAddress & | operator= (const QHostAddress & address ) |
~QHostAddress () | |
void | clear () |
bool | isBroadcast () const |
bool | isEqual (const QHostAddress & other , QHostAddress::ConversionMode mode = TolerantConversion) const |
bool | isGlobal () const |
bool | isInSubnet (const QHostAddress & subnet , int netmask ) const |
bool | isInSubnet (const QPair<QHostAddress, int> & subnet ) const |
bool | isLinkLocal () const |
bool | isLoopback () const |
bool | isMulticast () const |
bool | isNull () const |
bool | isSiteLocal () const |
bool | isUniqueLocalUnicast () const |
int | protocol () const |
QString | scopeId () const |
void | setAddress (quint32 ip4Addr ) |
void | setAddress (const quint8 * ip6Addr ) |
void | setAddress (const Q_IPV6ADDR & ip6Addr ) |
void | setAddress (const sockaddr * sockaddr ) |
bool | setAddress (const QString & address ) |
void | setAddress (QHostAddress::SpecialAddress address ) |
void | setScopeId (const QString & id ) |
void | swap (QHostAddress & other ) |
quint32 | toIPv4Address (bool * ok = nullptr) const |
Q_IPV6ADDR | toIPv6Address () const |
QString | toString () const |
bool | operator!= (const QHostAddress & other ) const |
bool | operator!= (QHostAddress::SpecialAddress other ) const |
QHostAddress & | operator= (QHostAddress::SpecialAddress address ) |
bool | operator== (const QHostAddress & other ) const |
bool | operator== (QHostAddress::SpecialAddress other ) const |
QPair<QHostAddress, int> | parseSubnet (const QString & subnet ) |
size_t | qHash (const QHostAddress & key , size_t seed = 0) |
bool | operator!= (QHostAddress::SpecialAddress lhs , const QHostAddress & rhs ) |
QDataStream & | operator<< (QDataStream & out , const QHostAddress & address ) |
bool | operator== (QHostAddress::SpecialAddress lhs , const QHostAddress & rhs ) |
QDataStream & | operator>> (QDataStream & in , QHostAddress & address ) |
此类以与平台和协议无关的方式保持 IPv4 或 IPv6 地址。
QHostAddress 通常被使用于 QTcpSocket , QTcpServer ,和 QUdpSocket 以连接到主机或设置服务器。
设置主机地址采用 setAddress (),和检索采有 toIPv4Address (), toIPv6Address (),或 toString ()。可以检查类型采用 protocol ().
注意: 请注意 QHostAddress 不做 DNS 查找。 QHostInfo 是需要的为此。
类还支持常见预定义地址: Null , LocalHost , LocalHostIPv6 , Broadcast ,和 Any .
另请参阅 QHostInfo , QTcpSocket , QTcpServer ,和 QUdpSocket .
[since 5.8]
enum QHostAddress::
ConversionModeFlag
常量 | 值 | 描述 |
---|---|---|
QHostAddress::StrictConversion
|
0
|
不转换 IPv6 地址为 IPv4,当比较 2 QHostAddress 不同协议对象,因此它们始终被认为是不同的。 |
QHostAddress::ConvertV4MappedToIPv4
|
1
|
转换 IPv4 映射 IPv6 地址 (RFC 4291 第 2.5.5.2 章节) 当比较时。因此 QHostAddress ("::ffff:192.168.1.1") 比较等于 QHostAddress ("192.168.1.1")。 |
QHostAddress::ConvertV4CompatToIPv4
|
2
|
转换 IPv4 兼容 IPv6 地址 (RFC 4291 第 2.5.5.1 章节) 当比较时。因此 QHostAddress ("::192.168.1.1") 比较等于 QHostAddress ("192.168.1.1")。 |
QHostAddress::ConvertLocalHost
|
8
|
转换 IPv6 回送地址为其等效 IPv4 当比较时。因此如 QHostAddress ("::1") 比较等于 QHostAddress ("127.0.0.1")。 |
QHostAddress::ConvertUnspecifiedAddress
|
4
|
所有未指定地址比较相等,也就是 AnyIPv4 , AnyIPv6 和任何。 |
QHostAddress::TolerantConversion
|
0xff
|
设置之前的所有 3 标志。 |
该枚举在 Qt 5.8 引入或被修改。
ConversionMode 类型是 typedef 对于 QFlags <ConversionModeFlag>。它存储 ConversionModeFlag 值的 OR (或) 组合。
另请参阅 isEqual ().
常量 | 值 | 描述 |
---|---|---|
QHostAddress::Null
|
0
|
null 地址对象。相当于 QHostAddress ()。另请参阅 QHostAddress::isNull (). |
QHostAddress::LocalHost
|
2
|
Pv4 本地主机地址。相当于 QHostAddress ("127.0.0.1")。 |
QHostAddress::LocalHostIPv6
|
3
|
IPv6 本地主机地址。相当于 QHostAddress ("::1"). |
QHostAddress::Broadcast
|
1
|
IPv4 广播地址。相当于 QHostAddress ("255.255.255.255")。 |
QHostAddress::AnyIPv4
|
6
|
IPv4 任意地址。相当于 QHostAddress ("0.0.0.0")。与此地址绑定的套接字将只监听 IPv4 接口。 |
QHostAddress::AnyIPv6
|
5
|
IPv6 任意地址。相当于 QHostAddress (" :: ")。与此地址绑定的套接字将只监听 IPv6 接口。 |
QHostAddress::Any
|
4
|
双堆栈任意地址。与此地址绑定的套接字将监听 IPv4 和 IPv6 接口。 |
构造 QHostAddress 对象为 address .
构造副本为给定 address .
构造 IPv4 或 IPv6 地址基于字符串 address (如 127.0.0.1)。
另请参阅 setAddress ().
构造 IPv4 或 IPv6 地址使用指定地址通过本机结构 sockaddr .
另请参阅 setAddress ().
构造主机地址对象采用 IPv6 地址 ip6Addr .
[since 5.5]
QHostAddress::
QHostAddress
(const
quint8
*
ip6Addr
)
构造主机地址对象采用 IPv6 地址 ip6Addr .
ip6Addr 必须是网络字节序 (大端在前) 的 16 字节数组。
该函数在 Qt 5.5 引入。
构造主机地址对象采用 IPv4 地址 ip4Addr .
构造 null 主机地址对象,即:对任何主机或接口无效的地址。
另请参阅 clear ().
赋值另一主机 address 到此对象,并返回此对象的引用。
销毁主机地址对象。
把主机地址设为 null 并把协议设为 QAbstractSocket::UnknownNetworkLayerProtocol .
另请参阅 QHostAddress::Null .
[since 5.11]
bool
QHostAddress::
isBroadcast
() const
返回
true
若地址是 IPv4 广播地址,
false
否则。IPv4 广播地址为 255.255.255.255。
注意,此函数不会返回 true 对于 IPv4 网络的本地广播地址。为此,请使用 QNetworkInterface 获取本地机器的广播地址。
该函数在 Qt 5.11 引入。
另请参阅 isLoopback (), isGlobal (), isMulticast (), isLinkLocal (),和 isUniqueLocalUnicast ().
[since 5.8]
bool
QHostAddress::
isEqual
(const
QHostAddress
&
other
,
QHostAddress::ConversionMode
mode
= TolerantConversion) const
返回
true
若此主机地址如同
other
给定地址;否则返回
false
.
参数
mode
controls which conversions are preformed between addresses of differing protocols. If no
mode
有给定,
TolerantConversion
默认履行。
该函数在 Qt 5.8 引入。
另请参阅 ConversionMode and operator== ().
[since 5.11]
bool
QHostAddress::
isGlobal
() const
返回
true
若地址是 IPv4 或 IPv6 全局地址,
false
otherwise. A global address is an address that is not reserved for special purposes (like loopback or multicast) or future purposes.
注意,IPv6 唯一本地单播地址被视为是全局地址 (见 isUniqueLocalUnicast ()),作为用于本地网络的 IPv4 保留地址通过 RFC 1918 .
Also note that IPv6 site-local addresses are deprecated and should be considered as global in new applications. This function returns true for site-local addresses too.
该函数在 Qt 5.11 引入。
另请参阅 isLoopback (), isSiteLocal (),和 isUniqueLocalUnicast ().
返回
true
if this IP is in the subnet described by the network prefix
subnet
and netmask
netmask
.
An IP is considered to belong to a subnet if it is contained between the lowest and the highest address in that subnet. In the case of IP version 4, the lowest address is the network address, while the highest address is the broadcast address.
subnet argument does not have to be the actual network address (the lowest address in the subnet). It can be any valid IP belonging to that subnet. In particular, if it is equal to the IP address held by this object, this function will always return true (provided the netmask is a valid value).
另请参阅 parseSubnet ().
这是重载函数。
返回
true
若此 IP 在子网中描述由
subnet
。
QHostAddress
member of
subnet
contains the network prefix and the int (second) member contains the netmask (prefix length).
[since 5.11]
bool
QHostAddress::
isLinkLocal
() const
返回
true
若地址是 IPv4 或 IPv6 本地链接地址,
false
否则。
An IPv4 link-local address is an address in the network 169.254.0.0/16. An IPv6 link-local address is one in the network fe80::/10. See the IANA IPv6 Address Space registry for more information.
该函数在 Qt 5.11 引入。
另请参阅 isLoopback (), isGlobal (), isMulticast (), isSiteLocal (),和 isUniqueLocalUnicast ().
[since 5.0]
bool
QHostAddress::
isLoopback
() const
返回
true
若地址是 IPv6 回环地址或任何 IPv4 回环地址。
该函数在 Qt 5.0 引入。
[since 5.6]
bool
QHostAddress::
isMulticast
() const
返回
true
若地址是 IPv4 或 IPv6 多播地址,
false
否则。
该函数在 Qt 5.6 引入。
另请参阅 isLoopback (), isGlobal (), isLinkLocal (), isSiteLocal (),和 isUniqueLocalUnicast ().
返回
true
若此主机地址无效,对于任何主机或接口。
默认构造函数创建 null 地址。
另请参阅 QHostAddress::Null .
[since 5.11]
bool
QHostAddress::
isSiteLocal
() const
返回
true
若地址是 IPv6 本地站点地址,
false
否则。
An IPv6 site-local address is one in the network fec0::/10. See the IANA IPv6 Address Space registry for more information.
IPv6 site-local addresses are deprecated and should not be depended upon in new applications. New applications should not depend on this function and should consider site-local addresses the same as global (which is why isGlobal () also returns true). Site-local addresses were replaced by Unique Local Addresses (ULA).
该函数在 Qt 5.11 引入。
另请参阅 isLoopback (), isGlobal (), isMulticast (), isLinkLocal (),和 isUniqueLocalUnicast ().
[since 5.11]
bool
QHostAddress::
isUniqueLocalUnicast
() const
返回
true
if the address is an IPv6 unique local unicast address,
false
否则。
An IPv6 unique local unicast address is one in the network fc00::/7. See the IANA IPv6 Address Space registry for more information.
Note that Unique local unicast addresses count as global addresses too. RFC 4193 says that, in practice, "applications may treat these addresses like global scoped addresses." Only routers need care about the distinction.
该函数在 Qt 5.11 引入。
另请参阅 isLoopback (), isGlobal (), isMulticast (), isLinkLocal (), and isUniqueLocalUnicast().
[static]
QPair
<
QHostAddress
,
int
> QHostAddress::
parseSubnet
(const
QString
&
subnet
)
Parses the IP and subnet information contained in subnet and returns the network prefix for that network and its prefix length.
The IP address and the netmask must be separated by a slash (/).
此函数支持的自变量形式:
For IP version 4, this function accepts as well missing trailing components (i.e., less than 4 octets, like "192.168.1"), followed or not by a dot. If the netmask is also missing in that case, it is set to the number of octets actually passed (in the example above, it would be 24, for 3 octets).
另请参阅 isInSubnet ().
返回主机地址的网络层协议。
返回 IPv6 地址的作用域 ID。对于 IPv4 地址,或者若地址不包含作用域 ID,空 QString 被返回。
The IPv6 scope ID specifies the scope of reachability for non-global IPv6 addresses, limiting the area in which the address can be used. All IPv6 addresses are associated with such a reachability scope. The scope ID is used to disambiguate addresses that are not guaranteed to be globally unique.
IPv6 specifies the following four levels of reachability:
When using a link-local or site-local address for IPv6 connections, you must specify the scope ID. The scope ID for a link-local address is usually the same as the interface name (e.g., "eth0", "en1") or number (e.g., "1", "2").
另请参阅 setScopeId (), QNetworkInterface ,和 QNetworkInterface::interfaceFromName .
设置 IPv4 地址指定通过 ip4Addr .
[since 5.5]
void
QHostAddress::
setAddress
(const
quint8
*
ip6Addr
)
这是重载函数。
设置 IPv6 地址指定通过 ip6Addr .
ip6Addr must be an array of 16 bytes in network byte order (high-order byte first).
该函数在 Qt 5.5 引入。
这是重载函数。
设置 IPv6 地址指定通过 ip6Addr .
这是重载函数。
Sets the IPv4 or IPv6 address specified by the native structure
sockaddr
。返回
true
and sets the address if the address was successfully parsed; otherwise returns
false
.
这是重载函数。
Sets the IPv4 or IPv6 address specified by the string representation specified by
address
(e.g. "127.0.0.1"). Returns
true
and sets the address if the address was successfully parsed; otherwise returns
false
.
[since 5.8]
void
QHostAddress::
setAddress
(
QHostAddress::SpecialAddress
address
)
这是重载函数。
Sets the special address specified by address .
该函数在 Qt 5.8 引入。
Sets the IPv6 scope ID of the address to id . If the address protocol is not IPv6, this function does nothing. The scope ID may be set as an interface name (such as "eth0" or "en1") or as an integer representing the interface index. If id is an interface name, QtNetwork will convert to an interface index using QNetworkInterface::interfaceIndexFromName () before calling the operating system networking functions.
另请参阅 scopeId (), QNetworkInterface ,和 QNetworkInterface::interfaceFromName .
[since 5.6]
void
QHostAddress::
swap
(
QHostAddress
&
other
)
交换此主机地址采用 other 。此操作非常快且从不失败。
该函数在 Qt 5.6 引入。
以数字形式返回 IPv4 地址。
例如:若地址为 127.0.0.1,返回值为 2130706433 (即 0x7f000001)。
此值有效若 protocol () 是 IPv4Protocol ,或者若协议是 IPv6Protocol , and the IPv6 address is an IPv4 mapped address (RFC4291). In those cases, ok 会被设为 true。否则,会被设为 false。
另请参阅 toString ().
以 Q_IPV6ADDR 结构形式返回 IPv6 地址。结构由 16 个无符号字符组成。
Q_IPV6ADDR addr = hostAddr.toIPv6Address(); // addr contains 16 unsigned characters for (int i = 0; i < 16; ++i) { // process addr[i] }
此值有效若 protocol () 是 IPv6Protocol 。若协议是 IPv4Protocol ,则返回映射 IPv4 的 IPv6 地址 (RFC4291)。
另请参阅 toString ().
以字符串形式返回地址。
例如,若地址是 IPv4 地址 127.0.0.1,返回字符串 127.0.0.1。对于 IPv6,字符串格式将遵循 RFC5952 推荐。对于 QHostAddress::Any ,其 IPv4 地址将返回 0.0.0.0
另请参阅 toIPv4Address ().
返回
true
若此主机地址不同于
other
给定地址;否则返回
false
.
返回
true
若此主机地址不同于
other
给定地址;否则返回
false
.
[since 5.8]
QHostAddress
&QHostAddress::
operator=
(
QHostAddress::SpecialAddress
address
)
赋值特殊地址 address 到此对象,并返回此对象的引用。
该函数在 Qt 5.8 引入。
另请参阅 setAddress ().
返回
true
若此主机地址如同
other
给定地址;否则返回
false
. This operator just calls
isEqual
(other,
StrictConversion
).
另请参阅 isEqual ().
返回
true
若此主机地址如同
other
给定地址;否则返回
false
.
[since 5.0]
size_t
qHash
(const
QHostAddress
&
key
,
size_t
seed
= 0)
返回哈希主机地址 key ,使用 seed 做计算种子。
该函数在 Qt 5.0 引入。
[since 5.9]
bool
operator!=
(
QHostAddress::SpecialAddress
lhs
, const
QHostAddress
&
rhs
)
返回
false
若特殊地址
lhs
如同主机地址
rhs
;否则返回
true
.
该函数在 Qt 5.9 引入。
另请参阅 isEqual ().
写入主机地址 address 到流 out 并返回流引用。
另请参阅 序列化 Qt 数据类型 .
返回
true
若特殊地址
lhs
如同主机地址
rhs
;否则返回
false
.
另请参阅 isEqual ().
把主机地址读入 address 从流 in 并返回流引用。
另请参阅 序列化 Qt 数据类型 .