This question talks about how it can be non-trivial to detect whether a TCP connection has disconnected: Detecting TCP Client Disconnect
What it doesn't answer is, do I need 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 they 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?
I am not sure if any of this is .NET specific, or just generic TCP/IP.