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)

プロフェッショナルIPv6解説動画シリーズ再生リスト

動画で学ぶ「プロフェッショナルIPv6」を作っています。 もしよろしければご覧ください。お楽しみいただければ幸いです!