如何在Ruby上的Unix上创建持久网络套接字?

时间:2008-09-01 23:19:04

标签: ruby sockets

我希望能够编写一个可以在不删除套接字连接的情况下重启的ruby程序。

2 个答案:

答案 0 :(得分:1)

此程序获取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

答案 1 :(得分:0)

你在谈论网络套接字,而不是我假设的UNIX套接字?

我不确定这是否符合您的需求,但我这样做的方法是分离网络和逻辑部分,只重新启动逻辑部分,然后将逻辑部分重新连接到网络部分。