【问题标题】:Ruby--How to get input from server without error? (socket.gets.chomp throwing error)Ruby - 如何从服务器获取输入而不会出错? (socket.gets.chomp 抛出错误)
【发布时间】:2014-01-05 15:08:47
【问题描述】:

我正在运行一个服务器/客户端程序,我不断收到一个我不明白的错误:

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

但是,代码运行一次。它实际上接收卡并将它们存储得很好。当客户端来回循环并挂起在get语句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

【问题讨论】:

    标签: ruby sockets networking client chomp


    【解决方案1】:

    gets 如果遇到文件结尾,将返回nil。大概,你想在那个时候终止。

    【讨论】:

    • 好的,这就是为什么它总是在大约 10 秒后退出,因为那是我到达 EOF 并且客户端出现故障的时候。谢谢!
    猜你喜欢
    • 2012-04-30
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 2018-10-19
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    相关资源
    最近更新 更多