libuvを使用してIPアドレスへのURLを解決しようとしています。私はaddrinfo
オブジェクトをコールバックに渡す関数uv_getaddrinfo
を使用しています。libuvを使用してDNSルックアップを実行するにはどうすればよいですか?
このコールバックはIPアドレスを受け取りますか? addrinfo
オブジェクトからIPアドレスを抽出するにはどうすればよいですか?
libuvを使用してIPアドレスへのURLを解決しようとしています。私はaddrinfo
オブジェクトをコールバックに渡す関数uv_getaddrinfo
を使用しています。libuvを使用してDNSルックアップを実行するにはどうすればよいですか?
このコールバックはIPアドレスを受け取りますか? addrinfo
オブジェクトからIPアドレスを抽出するにはどうすればよいですか?
uv_ipv4_addr
とuv_ipv4_name
のように、この構造に壊れたものに応じて、utility functionsがあります。
多くのLibUV関数はaddrinfo
を直接取るので、持っていると便利な構造です。
libuvはuv_ipv4_name
とuv_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
。それは本当に、「オブジェクト」が、「構造」ではありませんCです。違いは学術的に見えるかもしれませんが、プログラミングの観点からは重要です。 – tadman