带有TCPServer的Ruby if语句不起作用

时间:2013-02-21 07:38:10

标签: ruby sockets tcpserver banking

我在Ruby中创建一个快速的“银行”界面时遇到了一些麻烦。这纯粹是教育孩子们关于银行和编码的教育经验。

因此,在启动服务器之后,我将远程登录到它。从下面的代码中可以看出,唯一的命令是'exit'。但是,使用if根本不起作用,只要输入'exit'(不带''),就会发生else异常。

我发现使用unless代替if可以完美地运行,正如预期的那样。但是,如果我想要更多命令,最好使用传统的“ifelseifelse等等。”流程。

那么为什么我的if声明不起作用?

#!/usr/bin/ruby
require 'socket'
puts "Starting up server..."
server = TCPServer.new(2008)

while (session = server.accept)
 Thread.start do
   puts "DEBUG: Connection from #{session.peeraddr[2]} at #{session.peeraddr[3]}"
   puts "DEBUG: Got input from client."
   session.puts "\r\nWelcome to StudentUndernet Virtual Bank, #{session.peeraddr[2]}.\r\n Server time is #{Time.now}\r\n"
   session.puts "\r\nStudentUndernet Virtual Bank:\r\n"
   input = session.gets
   puts "#{session.peeraddr[2]} has sent:  " + input
   if session.gets == "exit"
     puts "DEBUG: Sending goodbye to #{session.peeraddr[2]}"
     session.puts "\r\nStudentUndernet Virtual Bank: Goodbye.\r\n"
     session.close
   else
     session.puts "SOMETHING ELSE HAPPENED!"
   end
 end
end

我知道这段代码可能非常“糟糕”,但请不要告诉我它!

0 个答案:

没有答案