title: NetworkStream.Read still blocks even when network goes down
body: <p>I have a server and multiple clients which connect via TCP sockets.  The server listens for connecting clients which first register themselves using their unique device id.  When the device first registers, the server then 'prods' the client with a small message.  This wakes up the client into downloading data from another source.</p>
  
  <p>The problem we are having is that the network is over GPRS and quite often in poor coverage areas the network goes down or the quality of service is poor.  What seems to be happening is that inside the client, the NetworkStream.Read() call is blocking even when the network layer drops.  There is no exception thrown and even when the network returns, the call seems to then not detect any data.</p>
  
  <p>Is there any reason for this? How do I get round this issue?</p>
  
  <p>I would have thought the NetworkStream would at least throw an exception so the client can go into a retry connect stage.</p>