2017-10-09 11 views
0

を使用してIPアドレスへのURLを解決しようとしています。私はaddrinfoオブジェクトをコールバックに渡す関数uv_getaddrinfoを使用しています。libuvを使用してDNSルックアップを実行するにはどうすればよいですか?

このコールバックはIPアドレスを受け取りますか? addrinfoオブジェクトからIPアドレスを抽出するにはどうすればよいですか?

+0

。それは本当に、「オブジェクト」が、「構造」ではありませんCです。違いは学術的に見えるかもしれませんが、プログラミングの観点からは重要です。 – tadman

答えて

1

uv_ipv4_addruv_ipv4_nameのように、この構造に壊れたものに応じて、utility functionsがあります。

多くのLibUV関数はaddrinfoを直接取るので、持っていると便利な構造です。


libuvはuv_ipv4_nameuv_ipv6_nameを提供します。

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; 
} 

あなたはuv_getaddrinfoからmultple addrinfo構造体を得ることができます:あなたが選択した機能は、あなたが持っているaddrinfoオブジェクトに依存します。これらは単一リンクリストに格納され、「次の」ポインタはaddrinfo.ai_nextです。

また、これは便利です。このようWhat is the difference between struct addrinfo and struct sockaddr

関連する問題