Ruby의 Unix에서 영구 네트워크 소켓을 어떻게 만드나요?
문제
소켓 연결을 끊지 않고 다시 시작할 수 있는 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 소켓이 아니라 네트워크 소켓에 대해 이야기하고 있습니까?
이것이 귀하의 요구 사항에 맞는지 잘 모르겠지만 제가 할 방법은 네트워킹 부분과 논리 부분을 분리하고 논리 부분만 다시 시작한 다음 논리 부분을 네트워킹 부분에 다시 연결하는 것입니다.
제휴하지 않습니다 StackOverflow