title: Should a server application detect stale/disconnected sockets?
body: <p>This question talks about how it can be non-trivial to detect whether a TCP connection has disconnected: <a href="https://stackoverflow.com/questions/283375/detecting-tcp-client-disconnect">Detecting TCP Client Disconnect</a></p>
  
  <p>What it doesn't answer is, do I <em>need</em> to detect such cases if I'm using modern asynchronous .NET networking classes? If my server accepts incoming connection requests from clients, and clients are responsible for re-connecting if <em>they</em> detect a problem, is it an issue? For instance if Client A periodically reconnects will its former connection get tidied up behind the scenes? If clients are badly behaved and disconnect improperly - which is not entirely under my control - can I end up with a load of 'stale' connections impacting performance?</p>
  
  <p>I am not sure if any of this is .NET specific, or just generic TCP/IP.</p>