るりまサーチ (Ruby 2.1.0)

最速Rubyリファレンスマニュアル検索!
154件ヒット [1-100件を表示] (0.036秒)
トップページ > バージョン:2.1.0[x] > クエリ:Addrinfo[x]

別のキーワード

  1. addrinfo bind
  2. addrinfo listen
  3. addrinfo connect
  4. addrinfo foreach
  5. addrinfo connect_to

ライブラリ

モジュール

キーワード

検索結果

<< 1 2 > >>

Addrinfo (114019.0)

ソケットのアドレス情報を保持するクラスです。

ソケットのアドレス情報を保持するクラスです。

ホスト/ポート番号/プロトコルなどを同定するために用いられます。
IPv4/IPv6/Unix domain socketなどのアドレス情報を保持することができます。

struct addrinfo に対応します。

Addrinfo#family_addrinfo(host, port) -> Addrinfo (81769.0)

引数から自身に「似た」Addrinfo オブジェクトを生成します。

引数から自身に「似た」Addrinfo オブジェクトを生成します。

「似た」の意味はプロトコルファミリ、ソケットタイプ、プロトコルが
同じことを意味します。

require 'socket'

Addrinfo.tcp("0.0.0.0", 4649).family_addrinfo("www.ruby-lang.org", 80)
#=> #<Addrinfo: 221.186.184.68:80 TCP (www.ruby-lang.org:80)>

Addrinfo.unix("/tmp/sock").family_addrinfo("/tmp/sock2")...

Addrinfo#family_addrinfo(path) -> Addrinfo (81769.0)

引数から自身に「似た」Addrinfo オブジェクトを生成します。

引数から自身に「似た」Addrinfo オブジェクトを生成します。

「似た」の意味はプロトコルファミリ、ソケットタイプ、プロトコルが
同じことを意味します。

require 'socket'

Addrinfo.tcp("0.0.0.0", 4649).family_addrinfo("www.ruby-lang.org", 80)
#=> #<Addrinfo: 221.186.184.68:80 TCP (www.ruby-lang.org:80)>

Addrinfo.unix("/tmp/sock").family_addrinfo("/tmp/sock2")...

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

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

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

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

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

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

Addrinfo.foreach(nodename, service, family=nil, socktype=nil, protocol=nil, flags=0) {|addrinfo| ... } -> [Addrinfo] (63655.0)

Addrinfo.getaddrinfo で得られる配列の各要素を繰り返します。

Addrinfo.getaddrinfo で得られる配列の各要素を繰り返します。

ブロックを省略した場合は Enumerator を返します。

@param nodename ノード名文字列(ホスト名もしくは IP アドレス)
@param service サービス名(文字列もしくはポート番号の整数)
@param family プロトコルファミリー(整数、文字列、シンボル、もしくは nil)
@param socktype ソケットタイプ(整数、文字列、シンボル、もしくは nil)
@param protocol プロトコル(整数、もしくは nil)
@param flags フラグ(...

絞り込み条件を変える

Addrinfo.unix(path, socktype=Socket::SOCK_STREAM) -> Addrinfo (63442.0)

Unix ソケットアドレスに対応する Addrinfo オブジェクトを返します。

Unix ソケットアドレスに対応する Addrinfo オブジェクトを返します。

socktype でソケットタイプを指定します。

require 'socket'

Addrinfo.unix("/tmp/sock") #=> #<Addrinfo: /tmp/sock SOCK_STREAM>
Addrinfo.unix("/tmp/sock", :DGRAM) #=> #<Addrinfo: /tmp/sock SOCK_DGRAM>

@param path Unix ソケットのアドレス文字列
@param socktype ソケットタイプ(整数、文字...

Addrinfo#ipv6_to_ipv4 -> Addrinfo|nil (63430.0)

IPv6 の v4 マップド/互換アドレスを v4 のアドレスに変換します。

IPv6 の v4 マップド/互換アドレスを v4 のアドレスに変換します。

それ以外のアドレスの場合 nil を返します。

require 'socket'

Addrinfo.ip("::192.0.2.3").ipv6_to_ipv4 #=> #<Addrinfo: 192.0.2.3>
Addrinfo.ip("::ffff:192.0.2.3").ipv6_to_ipv4 #=> #<Addrinfo: 192.0.2.3>
Addrinfo.ip("::1").ipv6_to_ipv4 #=> nil
Addrinfo.i...

Addrinfo.ip(host) -> Addrinfo (63406.0)

IP アドレスに対する Addrinfo オブジェクトを返します。

IP アドレスに対する Addrinfo オブジェクトを返します。

port, socktype, protocol は 0 で初期化されます。
つまりこの返り値はソケットを生成するには不適です。

require 'socket'

Addrinfo.ip("localhost") #=> #<Addrinfo: 127.0.0.1 (localhost)>

@param host ホスト(IP アドレスもしくはホスト名)
@see Addrinfo.new

Addrinfo.tcp(host, port) -> Addrinfo (63388.0)

TCP アドレスに対する Addrinfo オブジェクトを返します。

TCP アドレスに対する Addrinfo オブジェクトを返します。

require 'socket'

Addrinfo.tcp("localhost", "smtp")
#=> #<Addrinfo: 127.0.0.1:25 TCP (localhost:smtp)>

@param host ホスト(IP アドレスもしくはホスト名)
@param port ポート番号(整数)もしくはサービス名(文字列)

Addrinfo.udp(host, port) -> Addrinfo (63388.0)

UDP アドレスに対する Addrinfo オブジェクトを返します。

UDP アドレスに対する Addrinfo オブジェクトを返します。

require 'socket'

Addrinfo.udp("localhost", "daytime")
#=> #<Addrinfo: 127.0.0.1:13 UDP (localhost:daytime)>

@param host ホスト(IP アドレスもしくはホスト名)
@param port ポート番号(整数)もしくはサービス名(文字列)

絞り込み条件を変える

Addrinfo.new(sockaddr, family=Socket::PF_UNSPEC, socktype=0, protocol=0) -> Addrinfo (63370.0)

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

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

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

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

Addrinfo#ip? -> bool (63109.0)

アドレスが IP (v4/v6) のものならば true を返します。

アドレスが IP (v4/v6) のものならば true を返します。

require 'socket'

Addrinfo.tcp("127.0.0.1", 80).ip? #=> true
Addrinfo.tcp("::1", 80).ip? #=> true
Addrinfo.unix("/tmp/sock").ip? #=> false

@see Addrinfo#ipv4?, Addrinfo#ipv6?, Addrinfo#unix?

Addrinfo#ipv4? -> bool (63091.0)

アドレスが IPv4 のものならば true を返します。

アドレスが IPv4 のものならば true を返します。

@see Addrinfo#ip?, Addrinfo#ipv6?

require 'socket'

Addrinfo.tcp("127.0.0.1", 80).ipv4? #=> true
Addrinfo.tcp("::1", 80).ipv4? #=> false
Addrinfo.unix("/tmp/sock").ipv4? #=> false

Addrinfo#ipv6? -> bool (63091.0)

アドレスが IPv6 のものならば true を返します。

アドレスが IPv6 のものならば true を返します。

require 'socket'

Addrinfo.tcp("127.0.0.1", 80).ipv6? #=> false
Addrinfo.tcp("::1", 80).ipv6? #=> true
Addrinfo.unix("/tmp/sock").ipv6? #=> false

@see Addrinfo#ipv4?, Addrinfo#ip?

Addrinfo#ip_address -> String (63073.0)

IP アドレスを文字列で返します。

IP アドレスを文字列で返します。

require 'socket'

Addrinfo.tcp("127.0.0.1", 80).ip_address #=> "127.0.0.1"
Addrinfo.tcp("::1", 80).ip_address #=> "::1"

@see Addrinfo#ip_port, Addrinfo#ip_unpack

絞り込み条件を変える

Addrinfo#ip_port -> Integer (63073.0)

ポート番号を整数で返します。

ポート番号を整数で返します。

require 'socket'

Addrinfo.tcp("127.0.0.1", 80).ip_port #=> 80
Addrinfo.tcp("::1", 80).ip_port #=> 80

@see Addrinfo#ip_address, Addrinfo#ip_unpack

Addrinfo#ip_unpack -> [String, Integer] (63073.0)

IP アドレスとポート番号を 2 要素の配列で返します。

IP アドレスとポート番号を 2 要素の配列で返します。

require 'socket'

Addrinfo.tcp("127.0.0.1", 80).ip_unpack #=> ["127.0.0.1", 80]
Addrinfo.tcp("::1", 80).ip_unpack #=> ["::1", 80]

@see Addrinfo#ip_address, Addrinfo#ip_port

Addrinfo#unix? -> bool (63073.0)

アドレスが Unix domain socket のものならば true を返します。

アドレスが Unix domain socket のものならば true を返します。

require 'socket'

Addrinfo.tcp("127.0.0.1", 80).unix? #=> false
Addrinfo.tcp("::1", 80).unix? #=> false
Addrinfo.unix("/tmp/sock").unix? #=> true

@see Addrinfo#ip?

Addrinfo#canonname -> String|nil (63055.0)

カノニカル名を文字列で返します。

カノニカル名を文字列で返します。

カノニカル名が存在しない場合には nil を返します。

カノニカル名は Addrinfo.getaddrinfo に Socket::AI_CANONINAME
を指定した場合にセットされます。

require 'socket'

list = Addrinfo.getaddrinfo("www.ruby-lang.org", 80, :INET, :STREAM, nil, Socket::AI_CANONNAME)
p list[0] #=> #<Addrinfo: 221.186.184.68:80 TCP carbon.ruby-la...

Addrinfo#connect_from(host, port) -> Socket (63055.0)

引数で指定されたアドレスから 自身のアドレスへソケットを接続します。

引数で指定されたアドレスから
自身のアドレスへソケットを接続します。

接続元のアドレスは Addrinfo#family_addrinfo により生成された
ものが用いられます。

ブロックが渡されたときにはそのブロックに接続済み Socket
オブジェクトが渡されます。ブロックの返り値がメソッドの返り値となります。
ブロックを省略した場合は、接続済みSocket
オブジェクトが返されます。

引数で指定したアドレスはソケット接続のローカル側のアドレスになります。

require 'socket'

Addrinfo.tcp("www.ruby-lang.org", 80).co...

絞り込み条件を変える

Addrinfo#connect_from(host, port) {|sock| ... } -> object (63055.0)

引数で指定されたアドレスから 自身のアドレスへソケットを接続します。

引数で指定されたアドレスから
自身のアドレスへソケットを接続します。

接続元のアドレスは Addrinfo#family_addrinfo により生成された
ものが用いられます。

ブロックが渡されたときにはそのブロックに接続済み Socket
オブジェクトが渡されます。ブロックの返り値がメソッドの返り値となります。
ブロックを省略した場合は、接続済みSocket
オブジェクトが返されます。

引数で指定したアドレスはソケット接続のローカル側のアドレスになります。

require 'socket'

Addrinfo.tcp("www.ruby-lang.org", 80).co...

Addrinfo#inspect_sockaddr -> String (63055.0)

アドレスやポート番号などの情報を人間に読める形の文字列で返します。

アドレスやポート番号などの情報を人間に読める形の文字列で返します。

require 'socket'

Addrinfo.tcp("localhost", 80).inspect_sockaddr #=> "127.0.0.1:80"
Addrinfo.tcp("ip6-localhost", 80).inspect_sockaddr #=> "[::1]:80"
Addrinfo.unix("/tmp/sock").inspect_sockaddr #=> "/tmp/sock"

Addrinfo.foreach(nodename, service, family=nil, socktype=nil, protocol=nil, flags=0) -> Enumerator (63055.0)

Addrinfo.getaddrinfo で得られる配列の各要素を繰り返します。

Addrinfo.getaddrinfo で得られる配列の各要素を繰り返します。

ブロックを省略した場合は Enumerator を返します。

@param nodename ノード名文字列(ホスト名もしくは IP アドレス)
@param service サービス名(文字列もしくはポート番号の整数)
@param family プロトコルファミリー(整数、文字列、シンボル、もしくは nil)
@param socktype ソケットタイプ(整数、文字列、シンボル、もしくは nil)
@param protocol プロトコル(整数、もしくは nil)
@param flags フラグ(...

Addrinfo#connect_to(host, port) -> Socket (63037.0)

自身のアドレスから指定したホストへソケット接続します。

自身のアドレスから指定したホストへソケット接続します。

接続元のアドレスは Addrinfo#family_addrinfo により生成された
ものが用いられます。

ブロックが渡されたときにはそのブロックに接続済み Socket
オブジェクトが渡されます。ブロックの返り値がメソッドの返り値となります。
ブロックを省略した場合は、接続済み Socket
オブジェクトが返されます。

@param host ホスト(IP アドレスもしくはホスト名)
@param port ポート番号(整数)もしくはサービス名(文字列)

Addrinfo#connect_to(host, port) {|sock| ... } -> object (63037.0)

自身のアドレスから指定したホストへソケット接続します。

自身のアドレスから指定したホストへソケット接続します。

接続元のアドレスは Addrinfo#family_addrinfo により生成された
ものが用いられます。

ブロックが渡されたときにはそのブロックに接続済み Socket
オブジェクトが渡されます。ブロックの返り値がメソッドの返り値となります。
ブロックを省略した場合は、接続済み Socket
オブジェクトが返されます。

@param host ホスト(IP アドレスもしくはホスト名)
@param port ポート番号(整数)もしくはサービス名(文字列)

絞り込み条件を変える

Addrinfo#getnameinfo(flags=0) -> [String, String] (63037.0)

ノード名とサービスを文字列の配列で返します。

ノード名とサービスを文字列の配列で返します。

flags には Socket::NI_??? という名前の定数のビット OR を渡します。

require 'socket'

Addrinfo.tcp("127.0.0.1", 80).getnameinfo
#=> ["localhost", "www"]
Addrinfo.tcp("127.0.0.1", 80).getnameinfo(Socket::NI_NUMERICSERV)
#=> ["localhost", "80"]

@param flags フラグ
@raise SocketError getnam...

Addrinfo#afamily -> Integer (63019.0)

アドレスファミリーを整数で返します。

アドレスファミリーを整数で返します。

require 'socket'

Addrinfo.tcp("localhost", 80).afamily == Socket::AF_INET #=> true

Addrinfo#bind -> Socket (63019.0)

自身のアドレスにバインドされたソケットを作成します。

自身のアドレスにバインドされたソケットを作成します。

ブロックが渡されたときにはそのブロックに生成された Socket
オブジェクトが渡されます。ブロックの返り値がメソッドの返り値となります。
ブロックを省略した場合は、生成された Socket
オブジェクトが返されます。

require 'socket'

Addrinfo.udp("0.0.0.0", 9981).bind {|s|
s.local_address.connect {|s| s.send "hello", 0 }
p s.recv(10) #=> "hello"
}

Addrinfo#bind {|sock| ... } -> object (63019.0)

自身のアドレスにバインドされたソケットを作成します。

自身のアドレスにバインドされたソケットを作成します。

ブロックが渡されたときにはそのブロックに生成された Socket
オブジェクトが渡されます。ブロックの返り値がメソッドの返り値となります。
ブロックを省略した場合は、生成された Socket
オブジェクトが返されます。

require 'socket'

Addrinfo.udp("0.0.0.0", 9981).bind {|s|
s.local_address.connect {|s| s.send "hello", 0 }
p s.recv(10) #=> "hello"
}

Addrinfo#ipv4_loopback? -> bool (63019.0)

IPv4 のループバックアドレス(127.0.0.0/8) であれば真を返します。

IPv4 のループバックアドレス(127.0.0.0/8) であれば真を返します。

@see Addrinfo#ipv6_loopback?

絞り込み条件を変える

Addrinfo#ipv6_loopback? -> bool (63019.0)

IPv6 のループバックアドレス(::1)であれば真を返します。

IPv6 のループバックアドレス(::1)であれば真を返します。

@see Addrinfo#ipv4_loopback?

Addrinfo#pfamily -> Integer (63019.0)

プロトコルファミリーを整数で返します。

プロトコルファミリーを整数で返します。

require 'socket'

Addrinfo.tcp("localhost", 80).pfamily == Socket::PF_INET #=> true

Addrinfo#protocol -> Integer (63019.0)

ソケットプロトコルを整数で返します。

ソケットプロトコルを整数で返します。

require 'socket'

Addrinfo.tcp("localhost", 80).protocol == Socket::IPPROTO_TCP #=> true

Addrinfo#socktype -> Integer (63019.0)

ソケットタイプを整数で返します。

ソケットタイプを整数で返します。

require 'socket'

Addrinfo.tcp("localhost", 80).socktype == Socket::SOCK_STREAM #=> true

Addrinfo#to_s -> String (63019.0)

struct sockaddr をパックした形式の文字列に変換します。

struct sockaddr をパックした形式の文字列に変換します。

require 'socket'

Addrinfo.tcp("localhost", 80).to_sockaddr
#=> "\x02\x00\x00P\x7F\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00"

絞り込み条件を変える

Addrinfo#to_sockaddr -> String (63019.0)

struct sockaddr をパックした形式の文字列に変換します。

struct sockaddr をパックした形式の文字列に変換します。

require 'socket'

Addrinfo.tcp("localhost", 80).to_sockaddr
#=> "\x02\x00\x00P\x7F\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00"

Addrinfo#unix_path -> String (63019.0)

Unix domain socket の path を文字列で返します。

Unix domain socket の path を文字列で返します。

require 'socket'

Addrinfo.unix("/tmp/sock").unix_path #=> "/tmp/sock"

@raise SocketError アドレスが Unix domain socket のものでない場合に発生します

Addrinfo#connect -> Socket (63001.0)

自身のアドレスへソケットを接続します。

自身のアドレスへソケットを接続します。

ブロックが渡されたときにはそのブロックに接続済み Socket
オブジェクトが渡されます。ブロックの返り値がメソッドの返り値となります。
ブロックを省略した場合は、接続済み Socket
オブジェクトが返されます。

Addrinfo#connect {|sock| ... } -> object (63001.0)

自身のアドレスへソケットを接続します。

自身のアドレスへソケットを接続します。

ブロックが渡されたときにはそのブロックに接続済み Socket
オブジェクトが渡されます。ブロックの返り値がメソッドの返り値となります。
ブロックを省略した場合は、接続済み Socket
オブジェクトが返されます。

Addrinfo#ipv4_multicast? -> bool (63001.0)

IPv4 のマルチキャストアドレス(224.0.0.0/4)であれば真を返します。

IPv4 のマルチキャストアドレス(224.0.0.0/4)であれば真を返します。

絞り込み条件を変える

Addrinfo#ipv4_private? -> bool (63001.0)

IPv4 のプライベートアドレス(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) であれば真を返します。

IPv4 のプライベートアドレス(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)
であれば真を返します。

Addrinfo#ipv6_linklocal? -> bool (63001.0)

IPv6 のリンクローカルアドレス(fe80::/10, 4291)であれば真を返します。

IPv6 のリンクローカルアドレス(fe80::/10, 4291)であれば真を返します。

Addrinfo#ipv6_mc_global? -> bool (63001.0)

IPv6 のマルチキャスト(グローバルスコープ) アドレスであれば真を返します。

IPv6 のマルチキャスト(グローバルスコープ)
アドレスであれば真を返します。

Addrinfo#ipv6_mc_linklocal? -> bool (63001.0)

IPv6 のマルチキャスト(リンクローカルスコープ)アドレスであれば真を返します。

IPv6 のマルチキャスト(リンクローカルスコープ)アドレスであれば真を返します。

Addrinfo#ipv6_mc_nodelocal? -> bool (63001.0)

IPv6 のマルチキャスト(ノードローカルスコープ)アドレスであれば真を返します。

IPv6 のマルチキャスト(ノードローカルスコープ)アドレスであれば真を返します。

絞り込み条件を変える

Addrinfo#ipv6_mc_orglocal? -> bool (63001.0)

IPv6 のマルチキャスト(組織(organization)ローカルスコープ) アドレスであれば真を返します。

IPv6 のマルチキャスト(組織(organization)ローカルスコープ)
アドレスであれば真を返します。

Addrinfo#ipv6_mc_sitelocal? -> bool (63001.0)

IPv6 のマルチキャスト(サイトローカルスコープ)アドレスであれば真を返します。

IPv6 のマルチキャスト(サイトローカルスコープ)アドレスであれば真を返します。

Addrinfo#ipv6_multicast? -> bool (63001.0)

IPv6 のマルチキャストアドレス(ff00::/8)であれば真を返します。

IPv6 のマルチキャストアドレス(ff00::/8)であれば真を返します。

Addrinfo#ipv6_sitelocal? -> bool (63001.0)

IPv6 のサイトローカルアドレス(fec0::/10, 3513)であれば真を返します。

IPv6 のサイトローカルアドレス(fec0::/10, 3513)であれば真を返します。

Addrinfo#ipv6_unique_local? -> bool (63001.0)

IPv6 のユニークローカルアドレス(fc00::/7, 4193)であれば真を返します。

IPv6 のユニークローカルアドレス(fc00::/7, 4193)であれば真を返します。

絞り込み条件を変える

Addrinfo#ipv6_unspecified? -> bool (63001.0)

IPv6 の不特定アドレス(unspecified address)(::)であれば真を返します。

IPv6 の不特定アドレス(unspecified address)(::)であれば真を返します。

Addrinfo#ipv6_v4compat? -> bool (63001.0)

IPv6 の v4互換アドレス(::/80)であれば真を返します。

IPv6 の v4互換アドレス(::/80)であれば真を返します。

Addrinfo#ipv6_v4mapped? -> bool (63001.0)

IPv6 の v4にマップされたアドレス(::ffff:0:0/80)であれば真を返します。

IPv6 の v4にマップされたアドレス(::ffff:0:0/80)であれば真を返します。

Addrinfo#listen(backlog=5) -> Socket (63001.0)

自身のアドレスにバインドされたソケットを作成し、 listen(2) を実行します。

自身のアドレスにバインドされたソケットを作成し、
listen(2) を実行します。

ブロックが渡されたときにはそのブロックに生成された Socket
オブジェクトが渡されます。ブロックの返り値がメソッドの返り値となります。
ブロックを省略した場合は、生成された Socket
オブジェクトが返されます。

@param backlog バックログの最大数

Addrinfo#listen(backlog=5) {|sock| ... } -> object (63001.0)

自身のアドレスにバインドされたソケットを作成し、 listen(2) を実行します。

自身のアドレスにバインドされたソケットを作成し、
listen(2) を実行します。

ブロックが渡されたときにはそのブロックに生成された Socket
オブジェクトが渡されます。ブロックの返り値がメソッドの返り値となります。
ブロックを省略した場合は、生成された Socket
オブジェクトが返されます。

@param backlog バックログの最大数

絞り込み条件を変える

Socket.getaddrinfo(nodename, servname, family=nil, socktype=nil, protocol=nil, flags=nil) -> Array (18355.0)

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

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

@param nodename ホスト名を指定します。 必須引数です。 (lib:socket#host_formatを参照)

@param servname サービス名を指定します。 必須引数です。 (lib:socket#service_formatを参照)

@param family アドレスファミリー。Sock...

Socket::AncillaryData#ip_pktinfo -> [Addrinfo, Integer, Addrinfo] (679.0)

自身の type が IP_PKTINFO である場合、保持しているデータ (アドレス、インターフェースのインデックス、ローカルアドレス) を3要素の配列で返します。

自身の type が IP_PKTINFO である場合、保持しているデータ
(アドレス、インターフェースのインデックス、ローカルアドレス)
を3要素の配列で返します。

IP_PKTINFO は非標準的拡張であり、システムによっては使えない場合があります。

require 'socket'

addr = Addrinfo.ip("127.0.0.1")
ifindex = 0
spec_dest = Addrinfo.ip("127.0.0.1")
ancdata = Socket::AncillaryData.ip_pktinfo(addr, ifindex, spe...

BasicSocket#local_address -> Addrinfo (406.0)

getsockname(2) で得られたローカルアドレス情報を Addrinfo オブジェクトとして返します。

getsockname(2) で得られたローカルアドレス情報を
Addrinfo オブジェクトとして返します。

返されたオブジェクトの Addrinfo#protocol は 0 を
返すことに注意してください。

require 'socket'

TCPSocket.open("www.ruby-lang.org", 80) {|s|
p s.local_address #=> #<Addrinfo: 192.168.0.129:36873 TCP>
}

TCPServer.open("127.0.0.1", 1512) {|serv|
p serv...

BasicSocket#remote_address -> Addrinfo (406.0)

getpeername(2) で得られたリモートアドレス情報を Addrinfo オブジェクトとして返します。

getpeername(2) で得られたリモートアドレス情報を
Addrinfo オブジェクトとして返します。

返されたオブジェクトの Addrinfo#protocol は 0 を
返すことに注意してください。

require 'socket'

TCPSocket.open("www.ruby-lang.org", 80) {|s|
p s.remote_address #=> #<Addrinfo: 221.186.184.68:80 TCP>
}

TCPServer.open("127.0.0.1", 1728) {|serv|
c = TCP...

BasicSocket#connect_address -> Addrinfo (388.0)

ローカルマシン内で接続するのに適当なアドレスを Addrinfo オブジェクトで返します。

ローカルマシン内で接続するのに適当なアドレスを Addrinfo
オブジェクトで返します。

BasicSocket#local_address の返り値
以下の点を除いては同じものを返します。
* IPv4 の不定アドレス(0.0.0.0) は IPv4 のループバックアドレス(127.0.0.1)
に置換される
* IPv6 の不定アドレス(::) は IPv6 のループバックアドレス(::1)
に置換される

BasicSocket#local_address が接続先として不適なアドレスを返す場合は
例外 SocketError が発生します。

requ...

絞り込み条件を変える

Socket::Ifaddr#addr -> Addrinfo | nil (352.0)

self のアドレスを Addrinfo オブジェクトで返します。 self が利用できない場合は nil を返します。

self のアドレスを Addrinfo オブジェクトで返します。
self が利用できない場合は nil を返します。

Socket::Ifaddr#broadaddr -> Addrinfo | nil (352.0)

self のブロードキャストアドレスを Addrinfo オブジェクトで返します。 self.flags で Socket::IFF_BROADCAST が有効ではない場合は nil を返します。

self のブロードキャストアドレスを Addrinfo オブジェクトで返します。
self.flags で Socket::IFF_BROADCAST が有効ではない場合は nil を返します。

Socket::Ifaddr#dstaddr -> Addrinfo | nil (352.0)

self の宛先アドレスを Addrinfo オブジェクトで返します。 self.flags で Socket::IFF_POINTOPOINT が有効ではない場合は nil を返します。

self の宛先アドレスを Addrinfo オブジェクトで返します。
self.flags で Socket::IFF_POINTOPOINT が有効ではない場合は nil を返します。

Socket::Ifaddr#netmask -> Addrinfo | nil (352.0)

self のネットマスクを Addrinfo オブジェクトで返します。 self が利用できない場合は nil を返します。

self のネットマスクを Addrinfo オブジェクトで返します。
self が利用できない場合は nil を返します。

Socket::UDPSource#local_address -> Addrinfo (352.0)

ローカル側のアドレス情報を Addrinfo オブジェクトで返します。

ローカル側のアドレス情報を Addrinfo オブジェクトで返します。

絞り込み条件を変える

Socket::UDPSource#remote_address -> Addrinfo (352.0)

リモート側のアドレス情報を Addrinfo オブジェクトで返します。

リモート側のアドレス情報を Addrinfo オブジェクトで返します。

Socket::AncillaryData#ipv6_pktinfo -> [Addrinfo, Integer] (340.0)

自身の type が IPV6_PKTINFO である場合、保持しているデータ (アドレス、インターフェースのインデックス) を2要素の配列で返します。

自身の type が IPV6_PKTINFO である場合、保持しているデータ
(アドレス、インターフェースのインデックス)
を2要素の配列で返します。

IPV6_PKTINFO については 3542 を参照してください。

require 'socket'

addr = Addrinfo.ip("::1")
ifindex = 0
ancdata = Socket::AncillaryData.ipv6_pktinfo(addr, ifindex)
p ancdata.ipv6_pktinfo #=> [#<Addrinfo: ::1>, 0]

@see Socke...

Socket::AncillaryData#ipv6_pktinfo_addr -> Addrinfo (340.0)

自身の type が IPV6_PKTINFO である場合、保持しているデータ (アドレス、インターフェースのインデックス) のアドレスを返します。

自身の type が IPV6_PKTINFO である場合、保持しているデータ
(アドレス、インターフェースのインデックス)
のアドレスを返します。

require 'socket'

addr = Addrinfo.ip("::1")
ifindex = 0
ancdata = Socket::AncillaryData.ipv6_pktinfo(addr, ifindex)
p ancdata.ipv6_pktinfo_addr #=> #<Addrinfo: ::1>

@see Socket::AncillaryData.ipv6_pktinfo,
S...

BasicSocket#recvmsg(maxmesglen=nil, flags=0, maxcontrollen=nil, opts={}) -> [String, Addrinfo, Integer, *Socket::AncillaryData] (322.0)

recvmsg(2) を用いてメッセージを受け取ります。

recvmsg(2) を用いてメッセージを受け取ります。

このメソッドはブロックします。ノンブロッキング方式で通信したい
場合は BasicSocket#recvmsg_nonblock を用います。

maxmesglen, maxcontrollen で受け取るメッセージおよび補助データ
(Socket::AncillaryData)の最大長をバイト単位で指定します。
省略した場合は必要なだけ内部バッファを拡大して
データが切れないようにします。

flags では Socket::MSG_* という名前の定数の biwsise OR を取った
ものを渡します。

opts にはその他...

Socket.accept_loop(sockets) {|sock, client_addrinfo| ...} -> () (322.0)

sockets でサーバソケットを受け取り、接続を待ち受け、 クライアントとの接続が確立するたびにブロックにその接続 ソケットを渡し呼び出します。

sockets でサーバソケットを受け取り、接続を待ち受け、
クライアントとの接続が確立するたびにブロックにその接続
ソケットを渡し呼び出します。

ブロックの引数はクライアントと接続したソケットオブジェクトと
Addrinfo オブジェクトです。

Socket.tcp_server_loop と同様、ブロックは
逐次的に呼び出されます。つまりブロックか終了するまで
次の接続は accept されません。
並列に通信したい場合は
スレッドのような並列実行機構を使う必要があります。

@param sockets 待ち受けたいサーバソケットの配列

@see Socket.tcp_server...

絞り込み条件を変える

Socket.unix_server_loop(path) {|socket, client_addrinfo| ... } -> () (322.0)

Unix サーバソケットを生成し、 新しい接続を受け入れるごとにブロックを呼び出します。

Unix サーバソケットを生成し、
新しい接続を受け入れるごとにブロックを呼び出します。

ブロックには新しい接続を表すソケットオブジェクトと、
クライアントアドレスを表す Addrinfo オブジェクトが渡されます。

ブロックの実行が終わってもソケットは close されません。
アプリケーション側が明示的に close する必要があります。

path という名前のファイルが既に存在するときは、
そのファイルのオーナである場合は先にそのファイルを削除してしまいます。
これは path が悪意あるユーザによって変更されない場合に限りは安全です。
つまり、 /tmp/malicious-us...

BasicSocket#recvmsg_nonblock(maxmesglen=nil, flags=0, maxcontrollen=nil, opts={}) -> [String, Addrinfo, Integer, *Socket::AncillaryData] (304.0)

recvmsg(2) を用いてノンブロッキング方式でメッセージを受け取ります。

recvmsg(2) を用いてノンブロッキング方式でメッセージを受け取ります。

ブロッキングの有無以外は BasicSocket#recvmsg と同じです。
詳しくはそちらを参照してください。

@param maxmesglen 受け取るメッセージの最大長
@param flags フラグ
@param maxcontrollen 受け取る補助データの最大長
@param opts ハッシュオプション

Socket#recvfrom(maxlen, flags=0) -> [String, Addrinfo] (304.0)

ソケットからデータを受け取ります。

ソケットからデータを受け取ります。

Socket#recv と同様ですが、返り値として
データ文字列と相手ソケットのアドレスのペアが返されます。

flags には Socket::MSG_* という定数の bitwise OR を渡します。
詳しくは recvfrom(2) を参照してください。

@param maxlen ソケットから受けとるデータの最大値
@param flags フラグ
@raise Errno::EXXX recvfrom(2) がエラーを報告した場合に発生します。詳しくは
Errno と man を見てください。
例:

require 's...

Socket#recvfrom_nonblock(maxlen, flags=0) -> [String, Addrinfo] (304.0)

ソケットをノンブロッキングモードに設定した後、 recvfrom(2) を呼び出します。

ソケットをノンブロッキングモードに設定した後、
recvfrom(2) を呼び出します。

引数、返り値は Socket#recvfrom と同じです。

recvfrom(2) がエラーになった場合、
EAGAIN, EINTR を含め例外 Errno::EXXX が発生します。
Errno::EWOULDBLOCK、Errno::EAGAIN のような待ってからリトライすることが
可能であることを意味する例外には、IO::WaitReadable が extend
されています。

@param maxlen ソケットから受けとるデータの最大値
@param flags フラグ
@rai...

Socket.ip_address_list -> [Addrinfo] (304.0)

ローカルの IP アドレスを配列で返します。

ローカルの IP アドレスを配列で返します。

絞り込み条件を変える

Socket.tcp_server_loop(host, port) {|sock,addr| ...} -> () (91.0)

TCP/IP で host:port で待ち受けるサーバ側のソケットを作成し、 新しい接続を受け入れるごとにブロックを呼び出します。

TCP/IP で host:port で待ち受けるサーバ側のソケットを作成し、
新しい接続を受け入れるごとにブロックを呼び出します。

ブロックには新しい接続を表すソケットオブジェクトと、
クライアントアドレスを表す Addrinfo オブジェクトが渡されます。

ブロックの実行が終わってもソケットは close されません。
アプリケーション側が明示的に close する必要があります。

このメソッドはブロックを逐次的に呼び出します。
つまりブロックからリターンするまで次のコネクションを受け入れません。
そのため、同時に複数のクライアントと通信したい場合は
スレッドのような並列機構を使う必...

Socket.tcp_server_loop(port) {|sock,addr| ...} -> () (91.0)

TCP/IP で host:port で待ち受けるサーバ側のソケットを作成し、 新しい接続を受け入れるごとにブロックを呼び出します。

TCP/IP で host:port で待ち受けるサーバ側のソケットを作成し、
新しい接続を受け入れるごとにブロックを呼び出します。

ブロックには新しい接続を表すソケットオブジェクトと、
クライアントアドレスを表す Addrinfo オブジェクトが渡されます。

ブロックの実行が終わってもソケットは close されません。
アプリケーション側が明示的に close する必要があります。

このメソッドはブロックを逐次的に呼び出します。
つまりブロックからリターンするまで次のコネクションを受け入れません。
そのため、同時に複数のクライアントと通信したい場合は
スレッドのような並列機構を使う必...

socket (91.0)

socket はプロセス外部との通信 (プロセス間通信、ホスト間通信) を実現します。

socket はプロセス外部との通信 (プロセス間通信、ホスト間通信) を実現します。


=== ソケットアドレス

ソケットというのは通信路の末端です。
たとえば 1対1 の通信では、まず通信路の両端にひとつずつソケットをつくり、
それらのソケットを接続することによって通信路が確立し、相互に通信できるようになります。
この接続時に、一方のソケットにもう一方のソケットの場所を教えてやる必要がありますが、
この場所を指定するものがソケットアドレスです。

ソケットアドレスはソケットの種類によって中身が異なります。
たとえば TCP では IP アドレスとポート番号ですし、
Unix ドメインソ...

Socket.tcp_server_sockets(host, port) -> [Socket] (73.0)

TCP/IP で host:port で待ち受けるサーバ側のソケットを 作成します。

TCP/IP で host:port で待ち受けるサーバ側のソケットを
作成します。

ブロックなしの場合は、ソケットオブジェクトの配列を返します。

ブロック付きの場合は、ソケットオブジェクトをそのブロックに
渡して呼び出します。ブロック終了時にそれらのソケットを閉じます。
返り値はブロックの評価値となります。

port が 0 の場合は、実際のポート番号は動的に選ばれます。
ただし返り値のソケットはすべて同じ番号を持ちます。

require 'socket'

# tcp_server_sockets returns は2つのソケットを返す
sockets = Socke...

Socket.tcp_server_sockets(host, port) {|sockets| ...} -> object (73.0)

TCP/IP で host:port で待ち受けるサーバ側のソケットを 作成します。

TCP/IP で host:port で待ち受けるサーバ側のソケットを
作成します。

ブロックなしの場合は、ソケットオブジェクトの配列を返します。

ブロック付きの場合は、ソケットオブジェクトをそのブロックに
渡して呼び出します。ブロック終了時にそれらのソケットを閉じます。
返り値はブロックの評価値となります。

port が 0 の場合は、実際のポート番号は動的に選ばれます。
ただし返り値のソケットはすべて同じ番号を持ちます。

require 'socket'

# tcp_server_sockets returns は2つのソケットを返す
sockets = Socke...

絞り込み条件を変える

Socket.tcp_server_sockets(port) -> [Socket] (73.0)

TCP/IP で host:port で待ち受けるサーバ側のソケットを 作成します。

TCP/IP で host:port で待ち受けるサーバ側のソケットを
作成します。

ブロックなしの場合は、ソケットオブジェクトの配列を返します。

ブロック付きの場合は、ソケットオブジェクトをそのブロックに
渡して呼び出します。ブロック終了時にそれらのソケットを閉じます。
返り値はブロックの評価値となります。

port が 0 の場合は、実際のポート番号は動的に選ばれます。
ただし返り値のソケットはすべて同じ番号を持ちます。

require 'socket'

# tcp_server_sockets returns は2つのソケットを返す
sockets = Socke...

Socket.tcp_server_sockets(port) {|sockets| ...} -> object (73.0)

TCP/IP で host:port で待ち受けるサーバ側のソケットを 作成します。

TCP/IP で host:port で待ち受けるサーバ側のソケットを
作成します。

ブロックなしの場合は、ソケットオブジェクトの配列を返します。

ブロック付きの場合は、ソケットオブジェクトをそのブロックに
渡して呼び出します。ブロック終了時にそれらのソケットを閉じます。
返り値はブロックの評価値となります。

port が 0 の場合は、実際のポート番号は動的に選ばれます。
ただし返り値のソケットはすべて同じ番号を持ちます。

require 'socket'

# tcp_server_sockets returns は2つのソケットを返す
sockets = Socke...

Socket::AncillaryData.ip_pktinfo(addr, ifindex, spec_dst=addr) -> Socket::AncillaryData (73.0)

type が IP_PKTINFO である AncillaryData を生成します。

type が IP_PKTINFO である AncillaryData を生成します。

IP_PKTINFO は非標準的拡張であり、システムによっては使えない場合があります。

require 'socket'

addr = Addrinfo.ip("127.0.0.1")
ifindex = 0
spec_dst = Addrinfo.ip("127.0.0.1")
p Socket::AncillaryData.ip_pktinfo(addr, ifindex, spec_dst)
#=> #<Socket::AncillaryData: INET IP PK...

Socket (55.0)

汎用ソケットクラス。

汎用ソケットクラス。

システムコールレベルから高水準の機能までを提供します。

ソケットオブジェクトを生成する汎用的な方法として
Socket.new がありますが、以下のようなより便利な
メソッドがあります。
* TCP のクライアントソケット Socket.tcp TCPSocket.open
* TCP のサーバソケット Socket.tcp_server_loop,
Socket.tcp_server_sockets, TCPServer.open
* UNIX socket のクライアントソケット Socket.unix UNIXSocket.open
* ...

Socket::Constants::NI_NAMEREQD -> Integer (55.0)

A name is required。名前解決できなかった場合にエラーを返すことを意味します。

A name is required。名前解決できなかった場合にエラーを返すことを意味します。

Socket.getnameinfo, Addrinfo#getnameinfo の引数 flags に渡す
定数です。

require 'socket'

# ここでは 192.0.2.18 は名前解決できないアドレス
Addrinfo.tcp("192.0.2.18", 514).getnameinfo()
# =>["192.0.2.18", "shell"]
Addrinfo.tcp("192.0.2.18", 514).getnameinfo(Socket:...

絞り込み条件を変える

Socket::NI_NAMEREQD -> Integer (55.0)

A name is required。名前解決できなかった場合にエラーを返すことを意味します。

A name is required。名前解決できなかった場合にエラーを返すことを意味します。

Socket.getnameinfo, Addrinfo#getnameinfo の引数 flags に渡す
定数です。

require 'socket'

# ここでは 192.0.2.18 は名前解決できないアドレス
Addrinfo.tcp("192.0.2.18", 514).getnameinfo()
# =>["192.0.2.18", "shell"]
Addrinfo.tcp("192.0.2.18", 514).getnameinfo(Socket:...

Socket.getifaddrs -> [Socket::Ifaddr] (37.0)

インターフェイスのアドレスを Socket::Ifaddr の配列で返します。

インターフェイスのアドレスを Socket::Ifaddr の配列で返します。

本メソッドはマルチキャスト通信が可能なインターフェイスを見つけるために使う事ができます。

require 'socket'

pp Socket.getifaddrs.reject {|ifaddr|
!ifaddr.addr.ip? || (ifaddr.flags & Socket::IFF_MULTICAST == 0)
}.map {|ifaddr| [ifaddr.name, ifaddr.ifindex, ifaddr.addr] }
#=> [["eth0", 2, #<...

Socket.unix_server_socket(path) -> Socket (37.0)

Unix サーバソケットを生成します。

Unix サーバソケットを生成します。

ブロックが省略されたときは、生成されたソケットが返されます。

ブロックが渡されたときは、生成されたソケットを
引数としてブロックを呼び出します。メソッドの返り値は
ブロックの評価値となります。また、ブロックの終了後に
ソケットを IO#close します。

require 'socket'

socket = Socket.unix_server_socket("/tmp/s")
p socket #=> #<Socket:fd 3>
p socket.local_address #=> #<...

Socket.unix_server_socket(path) {|sock| ... } -> object (37.0)

Unix サーバソケットを生成します。

Unix サーバソケットを生成します。

ブロックが省略されたときは、生成されたソケットが返されます。

ブロックが渡されたときは、生成されたソケットを
引数としてブロックを呼び出します。メソッドの返り値は
ブロックの評価値となります。また、ブロックの終了後に
ソケットを IO#close します。

require 'socket'

socket = Socket.unix_server_socket("/tmp/s")
p socket #=> #<Socket:fd 3>
p socket.local_address #=> #<...

Socket::AncillaryData#timestamp -> Time (37.0)

タイムスタンプ制御メッセージに含まれる時刻を Time オブジェクト で返します。

タイムスタンプ制御メッセージに含まれる時刻を Time オブジェクト
で返します。

"タイムスタンプ制御メッセージ" は以下のいずれかです。
* SOL_SOCKET/SCM_TIMESTAMP (micro second) GNU/Linux, FreeBSD, NetBSD, OpenBSD, Solaris, MacOS X
* SOL_SOCKET/SCM_TIMESTAMPNS (nano second) GNU/Linux
* SOL_SOCKET/SCM_BINTIME (2**(-64) second) FreeBSD

require 'socket...

絞り込み条件を変える

Socket::AncillaryData.ipv6_pktinfo(addr, ifindex) -> Socket::AncillaryData (37.0)

type が IPV6_PKTINFO である AncillaryData を生成します。

type が IPV6_PKTINFO である AncillaryData を生成します。

IPV6_PKTINFO は 3542 で定義されています。

require 'socket'

addr = Addrinfo.ip("::1")
ifindex = 0
p Socket::AncillaryData.ipv6_pktinfo(addr, ifindex)
#=> #<Socket::AncillaryData: INET6 IPV6 PKTINFO ::1 ifindex:0>

@param addr アドレス(文字列もしくは Addrinfo)
@pa...

Socket::UDPSource.new(remote_addr, local_addr) {|msg| ... } -> Socket::UDPSource (37.0)

Socket::UDPSource オブジェクトを生成します。

Socket::UDPSource オブジェクトを生成します。

このメソッドはユーザは直接使いません。Socket.udp_server_loop が
内部で用います。

@param remote_addr リモートのアドレス(Addrinfo オブジェクト)
@param local_addr ローカルのアドレス(Addrinfo オブジェクト)

BasicSocket#sendmsg(mesg, flags=0, dest_sockaddr=nil, *controls) -> Integer (19.0)

sendmsg(2) を用いてメッセージを送ります。

sendmsg(2) を用いてメッセージを送ります。

このメソッドはブロックします。ノンブロッキング方式で通信したい
場合は BasicSocket#sendmsg_nonblock を用います。

ソケットが connection-less の場合は dest_sockaddr で
通信先のアドレスを指定しなければなりません。Socket.sockaddr_in
の返り値や Addrinfo オブジェクトを引数として渡すことができます。

controls には 補助データ(ancillary data)を渡します。
Socket::AncillaryData のインスタンスや
3要素(c...

Socket#bind(my_sockaddr) -> 0 (19.0)

ソケットを my_sockaddr に結合します。bind(2) と同じ働きをします。

ソケットを my_sockaddr に結合します。bind(2)
と同じ働きをします。

@param my_sockaddr ソケットアドレス構造体を pack した文字列lib:socket#pack_stringもしくはAddrinfoオブジェクトを指定します。
@return 0 を返します。

Socket#connect(server_sockaddr) -> 0 (19.0)

connect(2) でソケットを接続します。

connect(2) でソケットを接続します。

server_sockaddr は、
lib:socket#pack_string
もしくは Addrinfo オブジェクト
です。

0 を返します。

@param server_sockaddr 接続先アドレス
@raise Errno::EXXX connect(2) がエラーを報告した場合に発生します。詳しくは
man を参照してください。


たとえば IPv4 の TCP ソケットを生成し、connect で www.ruby-lang.org:80 に接続するには以下のようにします。

例:

require...

絞り込み条件を変える

Socket.getnameinfo(sa, flags = 0) -> Array (19.0)

2553 で定義された getnameinfo() の機能を提供するク ラスメソッド。 gethostbyaddr() や getservbyport() の代 わりとして用意されています。IPのバージョンに依存しないプログラムを 書くための標準的なAPIです。

2553 で定義された getnameinfo() の機能を提供するク
ラスメソッド。 gethostbyaddr() や getservbyport() の代
わりとして用意されています。IPのバージョンに依存しないプログラムを
書くための標準的なAPIです。

@param sa 文字列か配列を与えます。

@param flags 省略可能な第2引数 flags には getnameinfo(3) の第7番目の引数に指定する flags に相当する Fixnum を与えます。

@return 配列を返し、その要素はアドレスとポートを表す文字列です。

@raise SocketErr...

Socket::AI_ADDRCONFIG -> Integer (19.0)

Accept only if any address is assigned。

Accept only if any address is assigned。

Socket.getaddrinfo, Addrinfo.getaddrinfo の引数 flags に渡す
定数です。

@see getaddrinfo(3)

Socket::AI_ALL -> Integer (19.0)

Allow all addresses。

Allow all addresses。

Socket.getaddrinfo, Addrinfo.getaddrinfo の引数 flags に渡す
定数です。

@see getaddrinfo(3)

Socket::AI_CANONNAME -> Integer (19.0)

Fill in the canonical name。

Fill in the canonical name。

Socket.getaddrinfo, Addrinfo.getaddrinfo の引数 flags に渡す
定数です。

@see getaddrinfo(3)

Socket::AI_DEFAULT -> Integer (19.0)

Default flags for getaddrinfo。

Default flags for getaddrinfo。

Socket.getaddrinfo, Addrinfo.getaddrinfo の引数 flags に渡す
定数です。

@see getipnodebyname(3freebsd)

絞り込み条件を変える

<< 1 2 > >>