默认
发表评论 3
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
socket出现少量close_wait后所有连接都不能发消息的问题
阅读(47683) | 评论(3 收藏 淘帖
1金币
socket出现close_wait后,所以连接都不能发送消息,但能建立连接,按说少量的close_wait不影响操作,有什么办法解决吗

标签:网络编程
上一篇:完全自已开发的IM该如何设计“失败重试”机制?下一篇:求教android消息推送:GCM、XMPP、MQTT三种方案的优劣
推荐方案
评论 3
出现这种情况,主要原因应该还是你的客户端TCP连接非正常退出导致的,主要是你的代码实现及异常处理机制不够优化,你需要找出你代码的问题所在,我建议你从以下方面来评估和解决之:

第一:
建议有必要完整了解一下TCP连接的整个生命周期原理,可以看看《TCP/IP详解》的第18章:http://docs.52im.net/extend/docs/book/tcpip/vol1/18/,TCP连接的整个生命周期维护起来相当繁琐,你有必要了解每一个状态的原理后再行优化你的代码:
socket出现少量close_wait后所有连接都不能发消息的问题_QQ20160518-0.png

第二:
在第一步的TCP生命周其原理掌握后,整体评估一下你的代码,找出:为何出现非正常单方面close?
如果原因是个低级问题,那么可着手解决之。如果问题不可避免,则建议退一步实现异常的退避和自行恢复机制(比如由服务端设置超时时间等,主动清除这个无效的连接,因为这些无效连接的积累,都是资源的占用)。
正常来讲,一些连接close_wait并不会影响其它正常的连接通信,好待也是多线程模型呢。
我猜想其它连接不能发消息的原因,可能另有原由,你得好好review你的代码哦
签名: 国庆长假还没有缓过来,请让我静一静,产品狗死远点...
新手一枚,只能围观。。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部