[英]Ruby background TCP Server
我希望创建一个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
您可以使用以下命令将服务器放入新的线程中
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类中,但是基本思想是相同的。
请注意,Ruby 线程实际上并不是并行执行的。 解释器只需要在它们之间来回切换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.