QHostAddress是Qt中用于表示网络地址的类,它支持IPv4和IPv6地址。
以下是QHostAddress的常用方法:
- 构造函数
QHostAddress(const QString &address = QString()):根据给定的字符串构造一个QHostAddress对象。
- 判断IP地址类型
bool isNull() const:判断QHostAddress是否为空。
bool isLoopback() const:判断QHostAddress是否为环回地址。
bool isMulticast() const:判断QHostAddress是否为多播地址。
bool isBroadcast() const:判断QHostAddress是否为广播地址。
- 获取IP地址信息
QString toString() const:获取IP地址字符串表示形式。
quint32 toIPv4Address() const:获取IPv4地址的无符号整数表示形式。
quint64 toIPv6Address() const:获取IPv6地址的无符号长整数表示形式。
- 设置IP地址信息
void setAddress(quint32 ip4Addr):设置IPv4地址。
void setAddress(quint8 *ip6Addr):设置IPv6地址,参数为指向长度为16字节的数组的指针。
示例代码:
// 创建一个空的 QHostAddress 对象
QHostAddress address;
// 判断是否为空
if (address.isNull()) {
qDebug() << "Empty QHostAddress";
}
// 根据 IPv4 地址字符串创建一个 QHostAddress 对象
address = QHostAddress("192.168.0.1");
// 判断是否是环回地址
if (address.isLoopback()) {
qDebug() << "Loopback address";
}
// 获取 IPv4 地址的无符号整数表示形式
quint32 ip4Addr = address.toIPv4Address();
qDebug() << "IPv4 address: " << ip4Addr;
// 设置 IPv6 地址
quint8 ip6Addr[16] = {0x20, 0x01, 0x0d, 0xb8, 0x85, 0xa3, 0x08, 0xd3,
0x13, 0x19, 0x72, 0xf8, 0x9c, 0xe1, 0xcf, 0xfd};
address.setAddress(ip6Addr);
// 获取 IPv6 地址的无符号长整数表示形式
quint64 ip6LongAddr = address.toIPv6Address();
qDebug() << "IPv6 address: " << QString::number(ip6LongAddr,16);