我希望创建一个TCPServer,它在后台监听,同时脚本继续正常执行。 例如 -
server=TCPServer.open(srvhost,srvport)
client=server.accept
res=send_request_cgi({
'uri' => "/",
'method' => 'GET',
'vars_get' =>
'cmd' => rand_text_alphanumeric(10)
}
})
print "#{res.headers}"
data=client.recv(1024)
puts data
client.close
这会暂停监听器的脚本。
目标 - 服务器将始终在srvport上接收应该打印的响应。
编辑 -
webserv=Thread.new do
server=TCPServer.new(srvhost,srvport)
client=server.accept
data=client.recv(1024)
if(data.empty?)
puts 'nope'
client.close
server.close
webserv.exit
end
puts data
client.write(cmd)
client.close
server.close
webserv.exit
end
答案 0 :(得分:0)
您可以将服务器置于新的Thread
websrv = Thread.new do
<your server logic> # Main server loop, handle data, etc.
ensure
<your cleanup code> # Close connections, files, etc.
end
<application code>
websrv.join # wait for web server to do its thing
毋庸置疑,在ruby中,你通常将它包装在某种BackgroundServer类中,但基本思路是一样的。
请注意,rubys 线程并不真正并行执行;解释器只需要在它们之间来回切换。