代码之家  ›  专栏  ›  技术社区  ›  sdgfsdh

如何使用libuv执行DNS查找?

  •  0
  • sdgfsdh  · 技术社区  · 8 年前

    我正在尝试使用 将URL解析为IP地址。我正在使用该函数 uv_getaddrinfo ,通过 addrinfo

    这是我收到IP地址的回调吗?如何从 addrinfo公司 对象

    1 回复  |  直到 8 年前
        1
  •  1
  •   sdgfsdh    8 年前

    utility functions 针对这一点 uv_ipv4_addr uv_ipv4_name 取决于你想从这个结构中打破什么。

    许多LibUV函数采用 addrinfo 直接,所以它是一个有用的结构。


    libuv提供 uv\u ipv4\u名称 uv_ipv6_name . 您选择的功能取决于 addrinfo公司 您拥有的对象:

    if (addrinfo.ai_family == AF_INET) {
        // ipv4
        char c[17] = { '\0' };
        uv_ip4_name((sockaddr_in*)(addrinfo.ai_addr), c, 16);
        std::cout << c << std::endl;
    } else if (addrinfo.ai_family == AF_INET6) {
        // ipv6
        char c[40] = { '\0' };
        uv_ip6_name((sockaddr_in6*)(addrinfo.ai_addr), c, 39);
        std::cout << c << std::endl;
    }
    

    你可能会被杀 addrinfo公司 结构来自 uv_getaddrinfo . 它们存储在一个单链表中,其中“下一个”指针是 addrinfo.ai_next

    这也很有帮助: What is the difference between struct addrinfo and struct sockaddr