类函数未通过套接字调用

时间:2017-08-04 15:02:28

标签: ruby

我正在尝试编写服务器。

require 'socket'

server = TCPServer.open(2000)
loop {
  Thread.start(server.accept) do |client|
    client.puts(Time.now.ctime)

    class DisplayMsg
      def self.msg(msg)
        client.puts msg
        client.close
      end
    end

    client.puts "Select 1,2,3"
    while user_input = client.gets.chomp
      case user_input
      when "1"
        client.puts "Hello"
      when "2"
        client.puts "Alo"
      when "3"
        DisplayMsg.msg("Exiting")
      end
    end
  end
}

通过调用类中定义的函数,我尝试Exit时就可以了。在那里,程序挂起并等待。

我的猜测是没有调用该函数,因为当我将调用交换到client.puts的函数时,它可以工作。

感谢任何帮助/指示。

1 个答案:

答案 0 :(得分:1)

当您启动子线程时,主线程将不会等待子线程结束,并且将在子线程完成其工作之前完成,除非您join子线程。