singleton method Addrinfo.new

new(sockaddr, family=Socket::PF_UNSPEC, socktype=0, protocol=0) -> Addrinfo[permalink][rdoc][edit]

新たな Addrinfo オブジェクトを返します。

sockaddr は connect(2) などで使われるパラメータで、 struct sockaddr に対応します。faimily, socktype, protocol は socket(2) のパラメータに対応します。

sockaddr には文字列もしくは配列を指定します。配列の場合は IPSocket#addrUNIXSocket#addr の値と互換でなければなりません。文字列の場合は Socket.sockaddr_inSocket.unpack_sockaddr_un で得られるようなものでなければなりません。

実際には sockaddr には以下のようなものが使えます。

  • ["AF_INET", 46102, "localhost.localdomain", "127,0,0,1"]
  • ["AF_INET6", 42304, "ip6-localhost", "::1"]
  • ["AF_UNIX", "/tmp/sock"]
  • Socket.sockaddr_in("smtp", "2001:DB8::1")
  • Socket.sockaddr_in(80, "172.18.22.42")
  • Socket.sockaddr_in(80, "www.ruby-lang.org")
  • Socket.sockaddr_un("/tmp/sock")

配列で AF_INET/AF_INET6 を指定した場合、配列の4番目の要素が実際のIPアドレスとして使われます。配列の3番目の要素はホスト名ですが Addrinfo#inspect での表示にしか用いられません。

family は Socket::PF_INET のようなプロコルファミリーを指定します。文字列やシンボル名を指定することができます(PF_ というプレフィクスは省略することもできます)。例えば :INET, :INET6, :UNIX, "PF_INET" などです。

socktype は Socket::SOCK_STREAM のようなソケットタイプを指定します。文字列やシンボル名を指定することができます(SOCK_ というプレフィクスは省略することもできます)。例えば :STREAM, :DGRAM, :RAW, "SOCK_STREAM" などです。

protocol は Socket::IPPROTO_TCP のようなプロトコルを指定します。 family や socktype と異なり、整数でなければなりません。デフォルト値(0) は raw socket 以外では適切な値です。

[PARAM] sockaddr:
ソケットのアドレス(配列もしくは文字列)
[PARAM] family:
プロトコルファミリー(整数、文字列、シンボル)
[PARAM] socktype:
ソケットタイプ(整数、文字列、シンボル)
[PARAM] protocol:
プロトコル(整数)
[EXCEPTION] SocketError:
不適なファミリーやソケットタイプなどを渡した場合に発生します