Ruby 3.3 リファレンスマニュアル > ライブラリ一覧 > socketライブラリ > Addrinfoクラス > getaddrinfo

singleton method Addrinfo.getaddrinfo

getaddrinfo(nodename, service, family=nil, socktype=nil, protocol=nil, flags=0) -> [Addrinfo][permalink][rdoc]

パラメータから複数の Addrinfo オブジェクトを生成し、その配列を返します。

nodename (ホスト名) と service (ポート番号) を Addrinfo に変換します。変換先は一意ではないため、複数のオブジェクトを返します。

nodename と service のどちらか一方は nil を渡すことができます (その部分は変換されません)。

family, socktype, protocol には希望する方式のヒントを与えます。例えば、SOCK_STREAM なソケットが必要な場合には socktype に指定します。 nil を指定した場合には制限しないことを意味します。 IPv6 に制限したい場合には family に PF_INET6 を指定します。

flags には Socket::AI_??? という定数のビット OR を取ります。

アドレスの使い方がわかっている場合には socktype を明示すべきです。 socktype を省略して service を整数で指定した場合にエラーが生じるプラットフォームが存在します。512 のようなポート番号は socktype なしでは曖昧な指定となるためです。

例:

require 'socket'

Addrinfo.getaddrinfo("www.kame.net", 80, nil, :STREAM)
#=> [#<Addrinfo: 203.178.141.194:80 TCP (www.kame.net:80)>,
#    #<Addrinfo: [2001:200:0:8002:203:47ff:fea5:3085]:80 TCP (www.kame.net:80)>]
[PARAM] nodename:
ノード名文字列(ホスト名もしくは IP アドレス)
[PARAM] service:
サービス名(文字列もしくはポート番号の整数)
[PARAM] family:
プロトコルファミリー(整数、文字列、シンボル、もしくは nil)
[PARAM] socktype:
ソケットタイプ(整数、文字列、シンボル、もしくは nil)
[PARAM] protocol:
プロトコル(整数、もしくは nil)
[PARAM] flags:
フラグ(整数)
[EXCEPTION] SocketError:
getaddrinfo(3)がエラーを返したときに発生する例外です

[SEE_ALSO] Addrinfo.foreach, Socket.getaddrinfo