2014-01-05 68 views
0

我運行的服務器/客戶端程序,我不斷收到一個錯誤,我不明白: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 

回答

2

gets將返回nil如果遇到文件的末尾。據推測,你想終止在那一點。

+0

好的,所以這就是爲什麼它總是在10秒左右退出,因爲那是當我到達EOF和客戶端故障時。謝謝! – Yallo