Ruby 后台 TCP 服务器
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
这会在侦听器处暂停脚本。
Objective-服务器将始终在它应该打印的 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
您可以将您的服务器放在新的 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 class 中,但基本思想是相同的。
注意 rubys threads 并不是真正并行执行;解释器只负责在它们之间来回切换。
我希望创建一个 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
这会在侦听器处暂停脚本。
Objective-服务器将始终在它应该打印的 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
您可以将您的服务器放在新的 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 class 中,但基本思想是相同的。
注意 rubys threads 并不是真正并行执行;解释器只负责在它们之间来回切换。