使用套接字时Ruby脚本的异常行为

时间:2014-03-28 19:00:20

标签: ruby sockets serversocket behavior

问题是我在Ruby编程方面非常初学,我在理解Ruby的行为方面遇到了一些麻烦。

以下是代码:

require 'socket'

server = TCPServer.new 2000
loop do
  Thread.start(server.accept) do |client|

    puts 'Client connected: ' + client.gets

    line = "-1"

    while (line != "/close ")
      line = client.gets();
      puts line
    end

    puts 'client closed'
    client.close
  end
end

如您所见,它是一个简单的套接字服务器,等待一些输入信息。 问题是,当它变为“/ close”时,它会退出while循环,但永远不会进入 puts 'client closed'client.close。那么为什么会这样,或者我做错了什么?

1 个答案:

答案 0 :(得分:1)

我怀疑如果您将puts line更改为puts line.inspect,您会看到问题。


发现了吗? gets按行读取,其中包含行终止\n,因此您获得的行不会等于"/close "。例如,更改比较以使用line.strip将起作用。