كيف أقوم بإنشاء مآخذ شبكة مستمرة على Unix في Ruby؟
سؤال
أود أن أكون قادرًا على كتابة برنامج روبي يمكنه إعادة التشغيل دون فقدان اتصالات المقبس الخاصة به.
المحلول
يحصل هذا البرنامج على صفحة 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
نصائح أخرى
أنت تتحدث عن مآخذ الشبكة، وليس مآخذ UNIX على ما أفترض؟
لست متأكدًا من أن هذا يناسب احتياجاتك، ولكن الطريقة التي سأفعل بها ذلك هي عن طريق فصل جزء الشبكة والجزء المنطقي، وإعادة تشغيل الجزء المنطقي فقط، ثم إعادة توصيل الجزء المنطقي بجزء الشبكة.
لا تنتمي إلى StackOverflow