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#addr や UNIXSocket#addr の値と互換でなければなりません。文字列の場合は Socket.sockaddr_in や Socket.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:
- 不適なファミリーやソケットタイプなどを渡した場合に発生します