title: C# Socket.Connected property is changed to false after calling Socket.Receive
body: <pre><code>int readCount;
  byte[] buffer = new byte[128];
  SocketError socketError;
  
  TcpClient tcpClient = tcpListener.AcceptTcpClient();
  tcpClient.Client.ReceiveTimeout = 500; // #1
  // tcpClient.Client.Connected is **true** here.
  readCount = tcpClient.Client.Receive(buffer, 0, buffer.Length, SocketFlags.None, out socketError); // reacCount &gt; 0
  // tcpClient.Client.Connected is **false** here.
  </code></pre>
  
  <p>If #1 is replaced with <strong>tcpClient.Client.Blocking = false;</strong>, tcpClient.Client.Connected has correct value(true).</p>
  
  <hr />
  
  <p>I've set <code>Socket.ReceiveTime</code> property to 100 and invoked <code>Socket.Receive()</code>. <code>Receive()</code> returned integer value greater than zero. No exception occurred.
  After I do my job with copied buffer - I didn't user any of Socket related methods -, Socket.Connected property has been changed to false.
  Why?</p>