title: Winsock 200ms delay issue
body: <p>I find out it can be delay 200ms on WinSock send call</p>
  
  <p>From MSDN:
  <a href="http://support.microsoft.com/kb/214397/en" rel="nofollow">http://support.microsoft.com/kb/214397/en</a></p>
  
  <p>Nagle Algorithm:
  <a href="http://en.wikipedia.org/wiki/Nagle" rel="nofollow">http://en.wikipedia.org/wiki/Nagle</a>'s_algorithm</p>
  
  <p><strong>Issue summary</strong>:</p>
  
  <p>If send small msg(&lt; MTU) with SO_SNDBUF "0" option repetedly,
  send function block 200ms.</p>
  
  <p><strong>My Question</strong>:
  Why <strong>first send message</strong> delay 200ms?</p>
  
  <p>Because TCP is idle before first send call, I think first message must be sent immediately.</p>
  
  <p>But Test result is not desired.</p>
  
  <p>First message also delayed 200ms, why?</p>
  
  <p>Thank you for answers.</p>
  
  <p><strong>Add some details</strong>:</p>
  
  <p>Naggle algorithm work for small message like following:</p>
  
  <pre><code>1. if wire is idle, send it immediately.
  2. if formal message's ACK is not received, wait until ACK &amp; send
  3. Window's TCP ack delay mechanism send ack after 200ms.
  </code></pre>
  
  <p>So, My expect is first message sends immediately and second message wait first message's ack for 200ms and so on.</p>
  
  <p>Is this wrong?</p>