Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > socketライブラリ > Socketクラス > tcp_server_sockets
tcp_server_sockets(port) -> [Socket][permalink][rdoc]tcp_server_sockets(host, port) -> [Socket]tcp_server_sockets(port) {|sockets| ...} -> objecttcp_server_sockets(host, port) {|sockets| ...} -> objectTCP/IP で host:port で待ち受けるサーバ側のソケットを 作成します。
ブロックなしの場合は、ソケットオブジェクトの配列を返します。
ブロック付きの場合は、ソケットオブジェクトをそのブロックに 渡して呼び出します。ブロック終了時にそれらのソケットを閉じます。 返り値はブロックの評価値となります。
port が 0 の場合は、実際のポート番号は動的に選ばれます。 ただし返り値のソケットはすべて同じ番号を持ちます。
require 'socket'
# tcp_server_sockets returns は2つのソケットを返す
sockets = Socket.tcp_server_sockets(1296)
p sockets #=> [#<Socket:fd 3>, #<Socket:fd 4>]
# それぞれは IPv4 と IPv6 のソケット
sockets.each {|s| p s.local_address }
#=> #<Addrinfo: [::]:1296 TCP>
# #<Addrinfo: 0.0.0.0:1296 TCP>
# ポート番号を動的に選んでも IPv6 と IPv4 で同じポート番号を持つ
sockets = Socket.tcp_server_sockets(0)
sockets.each {|s| p s.local_address }
#=> #<Addrinfo: [::]:53114 TCP>
# #<Addrinfo: 0.0.0.0:53114 TCP>
# ブロックにソケットの配列が渡される
Socket.tcp_server_sockets(0) {|sockets|
p sockets #=> [#<Socket:fd 3>, #<Socket:fd 4>]
}
[SEE_ALSO] Socket.tcp_server_loop