title: Ruby TCPSocket doesn't notice it when server is killed
body: <p>I've this ruby code that connects to a TCP server (namely, netcat). It loops 20 times, and sends "ABCD ". If I kill netcat, it takes TWO iterations of the loop for an exception to be triggered. On the first loop after netcat is killed, no exception is triggered, and "send" reports that 5 bytes have been correctly written... Which in the end is not true, since of course the server never received them.</p>
  
  <p>Is there a way to work around this issue ? Right now I'm losing data : since I think it's been correctly transfered, I'm not replaying it.</p>
  
  <pre><code>#!/usr/bin/env ruby
  require 'rubygems'
  require 'socket'
  
  sock = TCPSocket.new('192.168.0.10', 5443)
  sock.sync = true
  
  20.times do
    sleep 2
    begin
      count = sock.write("ABCD ")
      puts "Wrote #{count} bytes"
    rescue Exception =&gt; myException
      puts "Exception rescued : #{myException}"
    end
  end
  </code></pre>