c# 服务端用的tcplistener 异步连接 客户端错误退出(比如断电) 怎么得知

c# 服务端用的tcplistener 异步连接 客户端异常退出(比如断电) 如何得知
请问下大神们 1. c# 服务端用的 tcplistener 异步连接 客户端异常退出(比如断电) 如何得知?
                       2.客户端退出后,服务端除了释放NetworkStream 和 tcpclient外,比如创建的room不需要了 是手动销毁还是系统会自 动销毁
                       3.有什么常用的方法,优化服务端吗?
谢谢大家.
------解决思路----------------------
如果你的服务端并不保存TcpClient,那么它自动就会被关闭并且被GC回收了。如果你的服务端保存了TcpClient对象,那么你可以每隔十分钟发一次心跳消息,然后不要再继续引用那些发消息失败的TcpClient就行了。
------解决思路----------------------
c# 服务端用的tcplistener 异步连接 客户端错误退出(比如断电) 怎么得知
隔个几分钟发心跳,服务端设超时,如果超过一定时间没收到客户端的任何一个数据就强制掉线。
------解决思路----------------------
Server端不一定能快速获取到client的异常,
Server端必须设计超时检测逻辑,
一段时间内没有数据交互的链路,自动清理掉
这样保证server自身的资源占用可控,不至于崩溃掉