[socket]尴尬的close_wait状态以及应对策略([socket] awkward close_wait status and coping strategies).doc
- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[socket]尴尬的close_wait状态以及应对策略([socket] awkward close_wait status and coping strategies)
[socket]尴尬的close_wait状态以及应对策略([socket] awkward close_wait status and coping strategies)
[Socket] awkward CLOSE_WAIT status and coping strategies
Writers
Edition
This article assumes that you are familiar with the Socket, C++, and TCP states.
Zheng Yun @ Linktone
First draft
Chapter content
The reason for the generation of the CLOSE_WAIT state
Reuse local addresses and ports
Calm down or force off?
summary
Abstract: This article explains why the socket connection is locked in the CLOSE_WAIT state and by what measures to avoid this situation.
Not long ago, my Socket Client program ran into a very embarrassing error. It should have continued to send data to the server on a socket long connection. If the socket connection is broken, the program will automatically retry the connection.
One day, discovery programs are constantly trying to build connections, but they always fail. Check with netstat, the program has thousands of socket connections, in the CLOSE_WAIT state, so that reached the upper limit, so can not establish a new socket connection.
Why is that so?
Why are they all in the CLOSE_WAIT state?
The reason for the generation of the CLOSE_WAIT state
First of all, we know that if our Client program is in the CLOSE_WAIT state, it will indicate that the socket is passively closed!
Because if the Server side is actively breaking the current connection, then the two sides shut down the TCP connection, a total of four packet:
Server FIN Client
Server ACK Client
At this point, the Server side is in the FIN_WAIT_2 state; and our program is in the CLOSE_WAIT state.
Server FIN Client
At this point, Client sends FIN to Server, and Client to the LAST_ACK state.
Server ACK Client
Server responds to ACK, and then the Client socket is really in the CLOSED state.
Our program is in the CLOSE_WAIT state, rather than LAST_ACK, indicating that no FIN to Server, it may be in close connection before there are a lot of data to be sent or other things to do, cause not the FIN pa
您可能关注的文档
- java内存(Java Memory).doc
- java中的堆栈详解(Detailed description of stack in Java).doc
- java在软件开发中可能出现的几个错误观点(Several misconceptions that Java may have in software development).doc
- java基础知识上课笔记(Java basics, class notes).doc
- java框架报错的解决方案(Java frame error solution).doc
- java对世界各个时区(timezone)的通用转换处理方法(Java general conversion processing method for each time zone (timezone) of the world).doc
- java读写追加删除xml节点(Java reads, writes, appends, and deletes XML nodes).doc
- java虚拟机的内存设置(Memory settings for the Java virtual machine).doc
- it职场求生法则(加强版)(It law of survival in the workplace (enhanced version)).doc
- jdbc学习笔记——jdbc性能优化-by jon(JDBC learning notes - JDBC performance tuning, -by, Jon).doc
文档评论(0)