簡體   English   中英

如何在 Ruby 的 Unix 上創建持久網絡套接字?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM