From: David Thiel Date: 2001-05-24T07:36:15+09:00 Subject: [ruby-talk:15628] more fun with TCPServer Hello again :) I think there must be some kind of strange threading voodoo going on - I have this working, in a way. What happens with this is that after multiple people connect, eventually the threads of all but the last one seem to stop running after typing a few lines, seemingly stalling on the user.socket.gets. The last user to connect can continue to type, and everything is still echoed out to all the other users, but nothing they type ever echoes to anyone. Checking netstat, the buffers on the other connections continue to grow as other users type, but gets never seems to happen. Is this a problem with gets or threading? Thanks, David users = [] port = 4242 server = TCPServer.new('localhost', port) while (session = server.accept) users << User.new(session) users.last.thread = Thread.new(users.last) { |user| user.linenum = users.length user.address = user.socket.addr puts "connected: #{user.to_s}" until user.socket.eof input = user.socket.gets puts input users.each {|user| user.write(input) } end users.delete_at(user.linenum - 1) user.socket.close } end