面试题答案
一键面试require 'socket'
server = TCPServer.new('localhost', 3000)
clients = []
trap('INT') {
server.close
clients.each(&:close)
exit
}
loop do
client = server.accept
clients << client
Thread.start(client) do |current_client|
begin
while message = current_client.gets
clients.each do |c|
c.puts(message) unless c == current_client
end
end
rescue EOFError, Errno::ECONNRESET
clients.delete(current_client)
current_client.close
end
end
end