Как сделать постоянные сетевые сокеты на Unix в Ruby? - PullRequest
0 голосов
/ 02 сентября 2008

Я бы хотел написать программу ruby, которая может перезапускаться без разрыва соединений с сокетом.

Ответы [ 2 ]

1 голос
/ 02 сентября 2008

Эта программа получает домашнюю страницу Google, а затем, когда вы передаете ее SIG_INT через ctrl-c, она перезапускает программу и считывает вывод домашней страницы из открытого сокета с помощью 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
0 голосов
/ 02 сентября 2008

Вы говорите о сетевых сокетах, а не о сокетах UNIX, я полагаю?

Я не уверен, что это соответствует вашим потребностям, но я бы сделал это, разделив сетевую и логическую части и перезапустив только логическую часть, а затем снова подключив логическую часть к сетевой части.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...