使用 go 语言中的socket编程,调试发现客户端意外终止进程,未经过四次挥手,服务端的连接依然存在(资源未释放)
使用 go 语言net包中Conn对象的SetDeadline()方法,设置timeout,如果超时未接收到消息,在读消息队列的时候,就会获取到一个error,获取到error后,调用Conn.Close()即可关闭连接,释放资源。
在一定时间内如果没有接收到客户端发送的消息,并且利用setDeadline()方法捕捉到error后,服务端断开连接,释放资源。go socket 编程中如果服务端有这个过程,那么就认为这个服务端是有心跳的。