>>>>> "D" == David Thiel <dthiel / nexprise.com> writes: D> Is this a problem with gets or threading? No, with your source :-) D> while (session = server.accept) D> users << User.new(session) D> users.last.thread = Thread.new(users.last) { |user| ^^^^ D> user.linenum = users.length D> user.address = user.socket.addr D> puts "connected: #{user.to_s}" D> until user.socket.eof ^^^^ D> input = user.socket.gets D> puts input D> users.each {|user| user.write(input) } ^^^^ You re-use the same variable and erase its content, write it users.each {|new_user| new_user.write(input) } D> end D> users.delete_at(user.linenum - 1) D> user.socket.close D> } D> end Guy Decoux