Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > socketライブラリ > Socketクラス > getnameinfo

singleton method Socket.getnameinfo

getnameinfo(sa, flags = 0) -> Array

[RFC2553] で定義された getnameinfo() の機能を提供するク ラスメソッド。 gethostbyaddr() や getservbyport() の代 わりとして用意されています。IPのバージョンに依存しないプログラムを 書くための標準的なAPIです。

[PARAM] sa:
文字列か配列を与えます。
[PARAM] flags:
省略可能な第2引数 flags には getnameinfo(3) の第7番目の引数に指定する flags に相当する Fixnum を与えます。
[RETURN]
配列を返し、その要素はアドレスとポートを表す文字列です。
[EXCEPTION] SocketError:
getnameinfo(3) がエラーを起こした場合に生じる例外

引数 sa について

引数 sa には文字列か配列を与えます。文字列の場合は sockaddr 構造体 のパック文字列を与えます。具体的には BasicSocket#getsockname の値が利用できます。配列を与える場合には、要素が3つの場合と4つの場合 があります。

  • 要素が3つの場合: [アドレスファミリー, サービス, ホスト]
  • 要素が4つの場合: [アドレスファミリー, サービス, 任意, アドレスを表す文字列]

アドレスファミリーには Socket::AF_INET 等の定数の他に文字列 で "AF_INET" もしくは "AF_INET6" もしくは nil が 指定できます。ただしIPv6が使えないようにコンパイルされている場合は "AF_INET6" は無効な指定となります。アドレスファミリーに nil を指定することは Socket::AF_UNSPEC を指定すること と等価です。

サービス、ホストの指定に関しては socket/サービス指定形式 socket/ホスト指定形式 を参照してください。

要素が3つの場合でも、ホストにはアドレスを指定できますが、要素が4つ の場合には、最後の要素を名前解決しないことが保証されます。

引数flagsについて

省略可能な第2引数 flags には getnameinfo(3) の第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)を参照 して下さい。

使用例

Socket.getnameinfo(Socket.sockaddr_in('21','127.0.0.1'))
#=> ["localhost", "ftp"]

Socket.getnameinfo([nil, 21,'127.0.0.1'])
#=> ["localhost", "ftp"]
class Socket