如何在Ruby中的Unix上建立持久性网络套接字?
时间:2020-03-05 18:46:09 来源:igfitidea点击:
我希望能够编写一个ruby程序,该程序可以在不断开套接字连接的情况下重新启动。
解决方案
回答
我们是在谈论网络套接字,而不是我假设的UNIX套接字?
我不确定这是否适合需求,但是我要这样做的方法是分离网络和逻辑部分,然后仅重新启动逻辑部分,然后将逻辑部分重新连接到网络部分。
回答
该程序获取Google的主页,然后当我们通过ctrl-c传递SIG_INT时,它将重新启动该程序,并从与Google一起打开的套接字中读取主页的输出。
#!/usr/bin/ruby #simple_connector.rb require 'socket' puts "Started." if ARGV[0] == "restart" sock = IO.open(ARGV[1].to_i) puts sock.read exit else sock = TCPSocket.new('google.com', 80) sock.write("GET /\n") end Signal.trap("INT") do puts "Restarting..." exec("ruby simple_connector.rb restart #{sock.fileno}") end while true sleep 1 end