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
必須引数について
必須引数の意味は以下の通りです。
- nodename - ホスト名 (socket/ホスト指定形式を参照)
- servname - サービス名 (socket/サービス指定形式を参照)
省略可能な引数について
残りの引数は省略可能です。
- 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]]