singleton method Socket.getaddrinfo

getaddrinfo(nodename, servname, family=nil, socktype=nil, protocol=nil, flags=nil) -> Array[permalink][rdoc][edit]

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

[PARAM] nodename:
ホスト名を指定します。 必須引数です。 (socket/ホスト指定形式を参照)
[PARAM] servname:
サービス名を指定します。 必須引数です。 (socket/サービス指定形式を参照)
[PARAM] family:
アドレスファミリー。Socket::Constants::AF_INET など、AF_ で始まる定数を指定します。
[PARAM] socktype:
ソケットタイプ。 Socket::Constants::SOCK_STREAM など、 SOCK_ で始まる定数を指定します。
[PARAM] protocol:
プロトコル。Socket::Constants::IPPROTO_IP など、IPPROTO_ で始まる定数を指定します。
[PARAM] flags:
getaddrinfo(3) の第3引数に指定する addrinfo 構造体の ai_flags メンバに相当する整数。 Socket::AI_PASSIVEなど。
[RETURN]
7つの要素からなるアドレス情報に関する配列を返します。
[EXCEPTION] SocketError:
getaddrinfo(3)がエラーを返したときに発生する例外です

[SEE_ALSO] Addrinfo.getaddrinfo

アドレス情報について

アドレス情報とは7つの要素からなる次の形の配列です。

  • 第0要素 - アドレスファミリー (String)
  • 第1要素 - ポート番号 (Integer)
  • 第2要素 - ホスト名 (String)
  • 第3要素 - アドレス (String)
  • 第4要素 - アドレスファミリーに対応する Integer
  • 第5要素 - ソケットタイプに対応する Integer
  • 第6要素 - プロトコルに対応する Integer

必須引数について

必須引数の意味は以下の通りです。

省略可能な引数について

残りの引数は省略可能です。

  • family - アドレスファミリー。 Socket::Constants::AF_INET など、AF_ で始まる定数を指定します。
  • socktype - ソケットタイプ。 Socket::Constants::SOCK_STREAM など、SOCK_ で始まる定数を指定 します。
  • protocol - プロトコル。 Socket::Constants::IPPROTO_IP など、IPPROTO_ で始まる定数を指 定します。
  • flags - getaddrinfo(3) の第3引数に指定する addrinfo 構造体の ai_flags メンバに相当する Fixnum。 Socket::AI_PASSIVE、 Socket::AI_CANONNAME、 Socket::AI_NUMERICHOST が用意されている場合があります。

定数の意味について

引数に指定できる定数の意味については getaddrinfo(3) を参照して下さい。

使用例

例:

require 'socket'

p Socket.getaddrinfo(Socket.gethostname, "ftp")
#=> [["AF_INET", 21, "helium.ruby-lang.org", "210.251.121.214", 2, 1, 6]]

pp Socket.getaddrinfo(Socket.gethostname, nil)
#=> [["AF_INET", 0, "helium.ruby-lang.org", "210.251.121.214", 2, 1, 6],
#    ["AF_INET", 0, "helium.ruby-lang.org", "210.251.121.214", 2, 2, 17],
#    ["AF_INET", 0, "helium.ruby-lang.org", "210.251.121.214", 2, 3, 0]]