2012-06-08 34 views

回答

3

请看文档。 peerAddress()返回一个通用的QHostAddress - 它不限于IPv4!只要您连接到IPV6对等端,将使用QHostAddress::toIPv6Address返回完整的IPV6地址。像这样:

QAbstractSocket socket; 
socket.connectToHost(QHostAddress("2607:f8b0:4009:803::1005"), 80); // google.com 
.... 
const QHostAddress & addr = socket.peerAddress(); 
if (addr.protocol() == QAbstractSocket::IPv6Protocol) { 
    Q_IPV6ADDR address6 = addr.toIPv6Address(); 
    ... 
} 
+0

我明白了,谢谢。但是有一个问题,比方说,我使用IPv4连接到我的服务器,仍然有可能获得IPv6? (对不起,也许我误解了你的答案)。 – Blastcore

+1

@Blastcore:它*可能*是可能的。如果您通过IPV4的DNS名称连接到主机,那么您可能只需在DNS记录中查找IPV6地址即可。如果您只知道IPV4地址,则可以通过反向DNS查找来了解DNS名称。 –