Recovering from a broken TCP socket in Ruby when in gets()
I'm reading lines of input on a TCP socket, similar to this:

    class Bla  
      def getcmd
        @sock.gets unless @sock.closed?
      end
    
      def start     
        srv = TCPServer.new(5000)
        @sock = srv.accept
        while ! @sock.closed?
          ans = getcmd
        end
      end
    end

If the endpoint terminates the connection while getline() is running then gets() hangs. 

How can I work around this? Is it necessary to do non-blocking or timed I/O?

Recovering from a broken TCP socket in Ruby when in gets()
===

I'm reading lines of input on a TCP socket, similar to this:

    class Bla  
      def getcmd
        @sock.gets unless @sock.closed?
      end
    
      def start     
        srv = TCPServer.new(5000)
        @sock = srv.accept
        while ! @sock.closed?
          ans = getcmd
        end
      end
    end

If the endpoint terminates the connection while getline() is running then gets() hangs. 

How can I work around this? Is it necessary to do non-blocking or timed I/O?
