IPアドレスからホスト名への変換(getaddrinfo)
gethostbynameではIPv4の名前解決しかできません。 IPv6の名前解決も行いたい場合には、getaddrinfoを利用する必要があります。 ここでは、getaddrinfoの使い方を説明したいと思います。
getaddrinfoサンプル
getaddrinfoで名前解決を行うには、ホスト名(FQDN:Fully Qualified Domain Name)、ポート番号、アドレスファミリの3つの情報が必要になります。 以下のサンプルでは、とりあえずポート番号をてきとうに80としています。
アドレスファミリはAF_UNSPECにしているので、IPv4とIPv6の両方を問い合わせる事ができます。 アドレスファミリをAF_INETにすれば、IPv4だけの名前解決ができます。 また、AF_INET6にすればIPv6だけの名前解決ができます。
#!/usr/bin/ruby
require "socket"
p Socket.getaddrinfo("www.kame.net", 80, Socket::AF_UNSPEC)