繁体   English   中英

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

这会使脚本在侦听器处暂停。

目标-服务器将始终在应打印的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM