Slide 28
Slide 28 text
@thorstenball
Unicorn Unix Magic Tricks
Ruby, sockets and accept(2)
sock1 = Socket.new(:INET, :STREAM)
addr1 = Socket.pack_sockaddr_in(8888, '0.0.0.0')
sock1.bind(addr1)
sock1.listen(10)
sock2 = Socket.new(:INET, :STREAM)
addr2 = Socket.pack_sockaddr_in(9999, '0.0.0.0')
sock2.bind(addr2)
sock2.listen(10)
5.times do
fork do
loop do
readable, _, _ = IO.select([sock1, sock2])
connection, _ = readable.first.accept
puts "[#{Process.pid}] #{connection.read}"
connection.close
end
end
end
Process.wait