tcp_server_sockets(port) -> [Socket]
[permalink][rdoc]tcp_server_sockets(host, port) -> [Socket]
tcp_server_sockets(port) {|sockets| ...} -> object
tcp_server_sockets(host, port) {|sockets| ...} -> object
TCP/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