问题是我在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
。那么为什么会这样,或者我做错了什么?
答案 0 :(得分:1)
我怀疑如果您将puts line
更改为puts line.inspect
,您会看到问题。
gets
按行读取,其中包含行终止\n
,因此您获得的行不会等于"/close "
。例如,更改比较以使用line.strip
将起作用。