كيف أقوم بإنشاء مآخذ شبكة مستمرة على Unix في Ruby؟

StackOverflow https://stackoverflow.com/questions/38592

  •  09-06-2019
  •  | 
  •  

سؤال

أود أن أكون قادرًا على كتابة برنامج روبي يمكنه إعادة التشغيل دون فقدان اتصالات المقبس الخاصة به.

هل كانت مفيدة؟

المحلول

يحصل هذا البرنامج على صفحة 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 على ما أفترض؟

لست متأكدًا من أن هذا يناسب احتياجاتك، ولكن الطريقة التي سأفعل بها ذلك هي عن طريق فصل جزء الشبكة والجزء المنطقي، وإعادة تشغيل الجزء المنطقي فقط، ثم إعادة توصيل الجزء المنطقي بجزء الشبكة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top