首先 贴张图,先了解下close_wait是什么,在什么情况下产生

通过上图,我们来分析,什么情况下,连接处于CLOSE_WAIT状态呢?
在被动关闭连接情况下,在已经接收到FIN,但是还没有发送自己的FIN的时刻,连接处于CLOSE_WAIT状态。
通常来讲,CLOSE_WAIT状态的持续时间应该很短,正如SYN_RCVD状态。但是在一些特殊情况下,就会出现连接长时间处于CLOSE_WAIT状态的情况。
出现大量close_wait的现象,主要原因是某种情况下对方关闭了socket链接,但是我方忙与读或者写,没有关闭连接。
那解决这个问题的基本思路就是: socket通信时保证对端socket未关闭且正常,一定要判断read、write等接口的返回值,根据错误状态及时close
另外 通过setsockopt()接口设置设置SO_KEEPALIVE选项 这种方式不推荐
本文详细解释了TCP连接中Close_Wait状态产生的原因及其解决办法。重点在于理解何时连接会处于Close_Wait状态,并提供了避免该状态长时间存在的建议。
787

被折叠的 条评论
为什么被折叠?



