Qt 是否可以使用QAbstractSocket检索IPv6地址?

Qt 是否可以使用QAbstractSocket检索IPv6地址?,qt,ipv6,Qt,Ipv6,是否可以在QAbstractSocket上检索IPv6地址?您可以使用QAbstractSocket::peerAddress()检索IPv4,但我不确定IPv6是否正确。请查看文档。peerAddress()返回一个通用的QHostAddress——它不限于IPv4!只要您已连接到IPV6对等方,将使用QHostAddress::toipv6地址返回完整的IPV6地址。像这样: QAbstractSocket socket; socket.connectToHost(QHostAddress(

是否可以在
QAbstractSocket
上检索IPv6地址?您可以使用
QAbstractSocket::peerAddress()
检索IPv4,但我不确定IPv6是否正确。

请查看文档。
peerAddress()
返回一个通用的
QHostAddress
——它不限于IPv4!只要您已连接到IPV6对等方,将使用
QHostAddress::toipv6地址返回完整的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();
  ...
}

只要看看文档就可以了。
peerAddress()
返回一个通用的
QHostAddress
——它不限于IPv4!只要您已连接到IPV6对等方,将使用
QHostAddress::toipv6地址返回完整的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();
  ...
}

我明白了,谢谢。但是有一个问题,假设我使用IPv4连接到我的服务器,仍然可以使用IPv6吗?(对不起,也许我误解了你的答案。)@Blastcore:可能吧。如果您通过主机的DNS名称通过IPV4连接到主机,则只需在其DNS记录中查找IPV6地址。如果您只知道IPV4地址,那么您可以通过反向DNS查找了解DNS名称。我明白了,谢谢。但是有一个问题,假设我使用IPv4连接到我的服务器,仍然可以使用IPv6吗?(对不起,也许我误解了你的答案。)@Blastcore:可能吧。如果您通过主机的DNS名称通过IPV4连接到主机,则只需在其DNS记录中查找IPV6地址。如果您只知道IPV4地址,则可以通过反向DNS查找了解DNS名称。