我可以像这样创建一个QHostAddress
对象:
QHostAddress addr_ip4("127.0.0.1");
QHostAddress addr_ip6("::1/128");
并像这样测试它们的属性:
qDebug() << "addr_ip4.isNull() = " << addr_ip4.isNull();
qDebug() << "addr_ip4.isLoopback() = " << addr_ip4.isLoopback();
qDebug() << "addr_ip4.isMulticast() = " << addr_ip4.isMulticast();
qDebug() << "addr_ip6.isNull() = " << addr_ip6.isNull();
qDebug() << "addr_ip6.isLoopback() = " << addr_ip6.isLoopback();
qDebug() << "addr_ip6.isMulticast() = " << addr_ip6.isMulticast();
但。。。我如何判断哪些地址实际上是 IPv4,哪些是 IPv6?
调用 QHostAddress::p rotocol() 将返回一个 QAbstractSocket::NetworkLayerProtocol 枚举,该枚举指定地址是 IPv4、IPv6、两者还是其他。