![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络通信
yby4769250
C C python linux.
展开
-
CLOSE_WAIT的产生以及影响和解决方案
今天,做了CoolDown的测试时才发现,C/S架构中,如果服务器先执行主动关闭,则非常有可能导致客户端的socket一直处于CLOSE_WAIT状态,相应的导致服务器端的socket一直处于FIN_WAIT2状态,愿意是,当服务器端执行主动关闭时,发送FIN包,客户端相应ACK,,这个时候,服务器端进入FIN_WAIT2,而客户端进入CLOSE_WAIT状态,如果这个时候,客户端不执行shutd原创 2012-02-27 01:27:50 · 3076 阅读 · 0 评论 -
区分 WinSock中,closesocket 和 shutdown的作用
如果是shutdown(SD_SEND)则会发送FIN包,这是对协议层产生的影响,此时,协议层会首先把缓冲区中的数据发送出去,最后再发送FIN包,次称为‘从容关闭’或者‘优雅关闭’。而closesocket虽然也会发送FIN包,但是,此时会丢弃掉缓冲区中的数据,导致数据丢失,此称为‘强制关闭’,并且closesocket会使连接释放,并且,系统会释放与该socket相关的资源原创 2012-02-27 01:28:28 · 4923 阅读 · 0 评论 -
recv和send的真正作用
区分应用层的recv,send和内核中套接字的真正读取数据,要知道,TCP协议层是运行与内核当中,而通信是网卡直接的通信,因此,不要认为,没有调用recv就不会有数据,不管调没调用recv,只要对方send,线路上有数据,那么,协议就会从网卡里面读取该数据进内核的socket缓冲区中,而调用recv的真正作用只是把数据从socket内核缓冲区中把数据拷贝到应用层指定的buffer中,仅此而已,对协原创 2012-02-27 01:29:22 · 2073 阅读 · 2 评论