You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在iOS平台获取URL的IPv4与IPv6地址?

获取域名的IPv4和IPv6地址

你当前用的gethostbyname是仅支持IPv4的老旧接口,要同时获取IPv4和IPv6地址,得用标准的getaddrinfo函数,它能兼容两种地址类型,实现和dig stackoverflow.com A stackoverflow.com AAAA +short一致的效果。

以下是完整实现代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <arpa/inet.h>

int main() {
    const char *hostname = "stackoverflow.com";
    struct addrinfo hints, *result, *rp;
    int status;
    char ipstr[INET6_ADDRSTRLEN];

    // 初始化配置,允许同时获取IPv4和IPv6地址
    memset(&hints, 0, sizeof(hints));
    hints.ai_family = AF_UNSPEC;    // 不限制地址类型
    hints.ai_socktype = SOCK_STREAM; // 指定TCP类型(不影响地址解析)

    // 调用接口获取地址链表
    if ((status = getaddrinfo(hostname, NULL, &hints, &result)) != 0) {
        fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(status));
        return 1;
    }

    // 遍历链表输出所有地址
    for (rp = result; rp != NULL; rp = rp->ai_next) {
        void *addr;
        char *ipver;

        // 判断地址类型
        if (rp->ai_family == AF_INET) { // IPv4
            struct sockaddr_in *ipv4 = (struct sockaddr_in *)rp->ai_addr;
            addr = &(ipv4->sin_addr);
            ipver = "IPv4";
        } else { // IPv6
            struct sockaddr_in6 *ipv6 = (struct sockaddr_in6 *)rp->ai_addr;
            addr = &(ipv6->sin6_addr);
            ipver = "IPv6";
        }

        // 二进制地址转字符串
        inet_ntop(rp->ai_family, addr, ipstr, sizeof(ipstr));
        printf("%s: %s\n", ipver, ipstr);
    }

    // 释放链表内存
    freeaddrinfo(result);

    return 0;
}

关键说明

  • hints.ai_family = AF_UNSPEC:明确告诉函数返回IPv4和IPv6两种地址
  • getaddrinfo返回地址链表,每个节点对应一个解析出的地址
  • 通过ai_family字段区分IPv4(AF_INET)和IPv6(AF_INET6)
  • inet_ntop是inet_ntoa的升级版,完美支持IPv6地址转换

编译运行

用gcc编译:

gcc -o resolve_ip resolve_ip.c

运行后会输出类似dig命令的结果:

IPv4: 151.101.1.69
IPv4: 151.101.65.69
IPv4: 151.101.129.69
IPv4: 151.101.193.69
IPv6: 2606:4700::6810:172e
IPv6: 2606:4700::6810:162e

内容的提问来源于stack exchange,提问作者Bob The Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 12:57:25