Ruby从经常重置的服务器读取

时间:2012-10-14 17:19:25

标签: ruby sockets

我有一台经常断开连接的服务器

$echo "GET hosts" | nc localhost 323
a.host.com
b.host.com
c.host.com

使用以下代码从ruby中读取同样的内容

s = TCPSocket.new(host,port)
s.puts "GET hosts\n\n\r\r"
data = ""
begin
  until s.closed?
    l = s.gets
    puts "Host:" + l
    data = data + l
  end
rescue Exception => e
  puts "pp" + e.message
end

打印出来

Host:a.host.com
Host:b.host.com
Host:c.host.com
Host:Error reading from 3: Connection reset by peer

应用程序挂起,不知何故。 有人抬头吗?奇怪的是它没有进入异常处理程序。

1 个答案:

答案 0 :(得分:0)

您可以尝试像rescue Errno::ECONNRESET => e一样进行救援。

查看How to catch error Connection reset by peer (Errno::ECONNRESET),尤其是retry位。