title: TCP segments disappearing
body: <p>I run into a problem that googling seems can't solve. To keep it simple I have a client written in C# and a server running Linux written in C. Client is calling Send(buffer) in a loop 100 times. The problem is that server receives only a dozen of them. If I put a sleep, big enough, in a loop everything turns out fine. The buffer is small - about 30B. I read about Nagle's algorithm and ACK delay but it doesn't answer my problems.</p>
  
  <pre><code>          for(int i = 0; i &lt; 100; i++)
            { 
              try
              {                  
                  client.Send(oneBuffer, 0, oneBuffer.Length, SocketFlags.None)                    
              }
              catch (SocketException socE)
              {
                  if ((socE.SocketErrorCode == SocketError.WouldBlock)
                    || (socE.SocketErrorCode == SocketError.NoBufferSpaceAvailable)
                    || (socE.SocketErrorCode == SocketError.IOPending))
                  {
                     Console.WriteLine("Never happens :(");
                  }
              }
              Thread.Sleep(100); //problem solver but why??
  
            }
  </code></pre>
  
  <p>It's look like send buffer gets full and rejects data until it gets empty again, in blocking mode and nonblocking mode. Even better, I never get any exception!? I would expect some of the exceptions to raise but nothing. :( Any ideas? Thnx in advance.</p>