Ruby - 如何从服务器获得输入没有错误? (socket.gets.chomp抛出错误)

问题描述:

我运行的服务器/客户端程序,我不断收到一个错误,我不明白:Ruby - 如何从服务器获得输入没有错误? (socket.gets.chomp抛出错误)

FishClientRun.rb:18:in `<main>': undefined method `chomp' for nil:NilClass (NoMethodError) 
Shizuo:FISHGAME2 macowner$ 

但是,代码运行一次。它实际上收到卡并将它们存储得很好。当客户端来回环绕和挂起取得声明incoming = client.socket.gets.chomp。它不喜欢.chomp.如果我采取的.chomp,它挂起像它应该没有抛出一个错误,但然后我得到换行符,并得到不好的输入为client.input_decision(incoming)

我的客户:

client = ClientClass.new('localhost', 2012) 

while true 
    puts "IN WHILE TRUE!!!" 
    incoming = "" 
    incoming = client.socket.gets.chomp 
    puts "INPUT RECEIVED:::::::: #{incoming}" 

    client.input_decision(incoming) 
end 

这里的服务器。我认为这部分是好的:

server = SocketServerClass.new(2012, number_of_players) 

number_of_players.times do 
    server.accept_client(server.fish_game) 
end 
puts "Clients accepted" 

server.update_client_cards(server.fish_game) 
puts "client cards sent to server" 

while true 
sleep(10) 
break 
end 

gets将返回nil如果遇到文件的末尾。据推测,你想终止在那一点。

+0

好的,所以这就是为什么它总是在10秒左右退出,因为那是当我到达EOF和客户端故障时。谢谢! – Yallo