我正在尝试使用ruby telnet
库连接到打印机。我可以使用telnet
库成功连接到打印机,但每当我使用cmd
关键字库发送命令时,都会返回异常:
Net :: ReadTimeout:等待更多数据时超时
我使用以下命令连接到打印机
localhost = Net::Telnet::new("Host" => "192.168.25.168","Port" => 20000, "Timeout" => 10)
status = ""
localhost.cmd("SELECTGROUP 1") {|c| status = c }
if status == "ok"
puts "success"
else
puts "failure"
end
上面的localhost.cmd
命令返回字符串" ok"我期待的,或上述例外。
我想知道如何阻止cmd
命令发送超时异常。
答案 0 :(得分:0)
提升Exception
是命令“失败”时的标准行为 - 例如达到超时限制。我相信,你真正想做的是优雅地处理异常。您可以使用rescue
:
localhost = Net::Telnet::new("Host" => "192.168.25.168","Port" => 20000, "Timeout" => 10)
status = ""
begin
localhost.cmd("SELECTGROUP 1") {|c| status = c }
rescue Net::ReadTimeout
status = 'timeout'
end
if status == "ok"
puts "success"
else
puts "failure"
end
请注意,Net::Telnet#cmd
会将收到的数据作为字符串返回,因此您的上述代码实际上可以简化为:
localhost = Net::Telnet::new("Host" => "192.168.25.168","Port" => 20000, "Timeout" => 10)
begin
if localhost.cmd("SELECTGROUP 1") == 'ok'
puts 'success'
else
puts 'failure'
end
rescue Net::ReadTimeout
puts 'timeout'
end