[英]How do I make persistent network sockets on Unix in Ruby?
我希望能夠編寫一個 ruby 程序,該程序可以在不丟失套接字連接的情況下重新啟動。
該程序獲取 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
你說的是網絡套接字,而不是我假設的 UNIX 套接字?
我不確定這是否適合您的需求,但我的做法是將網絡和邏輯部分分開,只重新啟動邏輯部分,然后將邏輯部分重新連接到網絡部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.