1

頻繁に切断されるサーバーがあります

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

次のコードでルビーから同じことを読みながら

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

そして、どういうわけか、アプリケーションがハングします。これについて何か頭がありますか?? 奇妙なことは、例外ハンドラに入っていないことです。

4

1 に答える 1

0

そのように救助を試みることができますrescue Errno::ECONNRESET => e

How to catch error Connection reset by peer (Errno::ECONNRESET)、特にretryビットを確認してください。

于 2012-10-14T17:23:09.810 に答える