getnameinfo

getnameinfo

refe

 Socket.getnameinfo
 --- Socket.getnameinfo(sa[, flags])
 
     RFC:2553 で定義されたgetnameinfo() の機能を提供するク
     ラスメソッド。 gethostbyaddr() や getservbyport() の代
     わりとして用意されています。IPのバージョンに依存しないプログラムを
     書くための標準的なAPIです。
 
     配列を返し、その要素はアドレスとポートを表す文字列です。
 
     引数 sa には文字列か配列を与えます。文字列の場合は sockaddr 構造体
     のパック文字列を与えます。具体的には getsockaddr 
     の値が利用できます。配列を与える場合には、要素が3つの場合と4つの場合
     があります。
 
     * 要素が3つの場合:
          [アドレスファミリー, サービス, ホスト]
     * 要素が4つの場合:
          [アドレスファミリー, サービス, 任意, アドレスを表す文字列]
 
     アドレスファミリーには Socket::AF_INET 等の定数の他に文字列
     で "AF_INET" もしくは "AF_INET6" もしくは nil が
     指定できます。ただしIPv6が使えないようにコンパイルされている場合は 
     "AF_INET6" は無効な指定となります。アドレスファミリーnil を指定することは Socket::AF_UNSPEC を指定すること
     と等価です。
 
     サービスホストの指定に関しては サービス定形式、
     ホスト定形式を参照してください。
 
     要素が3つの場合でも、ホストにはアドレスを指定できますが、要素が4つ
     の場合には、最後の要素を名前解決しないことが保証されます。
 
     省略可能な第2引数 flags には getnameinfo(3) [manual page] 
     の第7番目の引数に指定する flags に相当する Fixnum を与えます。
 
     引数flagsを構成するための定数として
     Socket::NI_MAXHOST、
     Socket::NI_MAXSERV、
     Socket::NI_NOFQDN、
     Socket::NI_NUMERICHOST、
     Socket::NI_NAMEREQD、
     Socket::NI_NUMERICSERV、
     Socket::NI_DGRAM
     が用意されている場合があります。
 
     これらの定数の意味については getnameinfo(3) [manual page]を参照
     して下さい。
 
     例:
       Socket.getnameinfo(Socket.sockaddr_in('21','127.0.0.1
       #=> ["localhost", "ftp"]
 
       Socket.getnameinfo([nil, 21,'127.0.0.1'])
       #=> ["localhost", "ftp"]