I expected the script below to do the following:

(1) spawn a new thread
(2) connect to a server
(3) read the data transmitted by the server
(4) close the connection.
(5) repeat 1-4

While the script works, it does NOT spawn a new thread for each
connection. Does anyone why that is the case? Thanks.

require 'socket'

threads = []

500.times do
  threads << Thread.new do
    socket = TCPSocket.open('127.0.0.1', 23)
    pid = Process.pid
    while line = socket.gets
      print "Client thread (#{pid})\t" + line.chomp + "\n"
    end
    socket.close
  end
end

threads.each { |t| t.join }

-- 
Posted via http://www.ruby-forum.com/.