代码之家  ›  专栏  ›  技术社区  ›  ryantm

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

  •  0
  • ryantm  · 技术社区  · 16 年前

    我希望能够编写一个Ruby程序,它可以在不中断套接字连接的情况下重新启动。

    2 回复  |  直到 16 年前
        1
  •  1
  •   ryantm    16 年前

    这个程序获取谷歌的主页,然后当你通过ctrl-c传递它sig_int时,它重新启动程序,用谷歌从打开的套接字读取主页的输出。

    #!/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
    
        2
  •  0
  •   wvdschel    16 年前

    你说的是网络套接字,而不是我想的Unix套接字?

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