require 'socket'
# 创建一个服务器套接字并将其绑定到端口 8080
server1 = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, Socket::IPPROTO_TCP)
server1.bind(Socket.sockaddr_in(8081, '0.0.0.0'))
server1.listen(10)
server2 = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, Socket::IPPROTO_TCP)
server2.bind(Socket.sockaddr_in(8082, '0.0.0.0'))
server2.listen(10)
puts 'server1,server2 start!'
servers = [server1, server2]
puts "master pid: #{Process.pid}"
def start_worker(servers)
fork do
pid = Process.pid
loop do
ios = IO.select servers, nil, nil, 0
next unless ios
ios.first.each do |rfd|
new_socket, client_addr = rfd.accept
puts "New connection from #{client_addr.inspect}"
str = "hello, from: #{pid}"
response = "HTTP/1.1 200 OK\r\n" +
"Content-Type: text/plain\r\n" +
"Content-Length: #{str.length}\r\n" +
"Connection: close\r\n" +
"\r\n" + str
new_socket.write(response)
new_socket.close
end
end
end
end
start_worker(servers)
start_worker(servers)
loop do
sleep(2)
end
网友评论