如何在 iOS 上获取 IPv4 和 IPv6 值

How to get IPv4 & IPv6 values on iOS

提问人:Bob The Coder 提问时间:4/26/2023 更新时间:4/26/2023 访问量:60

问:

我正在尝试获取 URL 的 IPv4 和 IPv6 值,例如“stackoverflow.com”。

理想情况下,返回与dig stackoverflow.com A stackoverflow.com AAAA +short

我目前有以下内容,但对我来说,它只返回 IPv4 地址

struct hostent *host_entry = gethostbyname("stackoverflow.com");
                    char *buff;
                    buff = inet_ntoa(*((struct in_addr *)host_entry->h_addr_list));
iOS Objective-C iPhone 网络 DNS

评论

1赞 Paulw11 4/27/2023
您将需要使用 getaddrinfo,然后在数组中查找结果。“gethostbyname”无法识别 IPv6resultsAF_INET6
0赞 Bob The Coder 4/27/2023
@Paulw11谢谢!查看以下链接,您知道我如何更改它以从给定的 URL 返回 IPv4 和 IPv6 地址吗?stackoverflow.com/a/15571849/10111607
1赞 Paulw11 4/28/2023
您将使用主机名进行调用,然后遍历返回的结果,查找结果是 is(即 IPv4)和 。 然后将包含相关的地址字节。看看这个 subscription.packtpub.com/book/general/9781849698085/1/......getaddrinfoai_familyAF_INETAF_INET6ai_addr
0赞 Bob The Coder 5/4/2023
@Paulw11 这很完美,谢谢。您知道是否有任何内置方法可以排除在此返回的保留地址吗?

答: 暂无答案