closesocket,shutdown区别 recv,send意义 CLOSE_WAIT影响
来源:互联网 发布:c语言库函数,命令大全 编辑:程序博客网 时间:2024/06/05 23:52
http://blog.csdn.net/yby4769250/article/details/7296859
区分 WinSock中,closesocket 和 shutdown的作用
如果是shutdown(SD_SEND)则会发送FIN包,这是对协议层产生的影响,此时,协议层会首先把缓冲区中的数据发送出去,最后再发送FIN包,次称为‘从容关闭’或者‘优雅关闭’。
而closesocket虽然也会发送FIN包,但是,此时会丢弃掉缓冲区中的数据,导致数据丢失,此称为‘强制关闭’,并且closesocket会使连接释放,并且,系统会释放与该socket相关的资源
http://blog.csdn.net/yby4769250/article/details/7296860
recv和send的真正作用
区分应用层的recv,send和内核中套接字的真正读取数据,要知道,TCP协议层是运行与内核当中,而通信是网卡直接的通信,因此,不要认为,没有调用recv就不会有数据,不管调没调用recv,只要对方send,线路上有数据,那么,协议就会从网卡里面读取该数据进内核的socket缓冲区中,而调用recv的真正作用只是把数据从socket内核缓冲区中把数据拷贝到应用层指定的buffer中,仅此而已,对协议完全没影响,同理,因为socket默认是全缓冲,如果没有setsocketopt的话,只有当socket内核缓冲区中的数据满了之后才会执行真正的发送数据,才会把数据从socket的缓冲区中通过网卡把数据发送出去,其实就是执行真正的IO操作一样,因此,send的操作,只是把应用层的数据拷贝到socket的缓冲区中而已,并不表示把数据发送出去了,明白这几点。
http://blog.csdn.net/yby4769250/article/details/7296858
CLOSE_WAIT的产生以及影响和解决方案
今天,做了CoolDown的测试时才发现,C/S架构中,如果服务器先执行主动关闭,则非常有可能导致客户端的socket一直处于CLOSE_WAIT状态,相应的导致服务器端的socket一直处于FIN_WAIT2状态,愿意是,当服务器端执行主动关闭时,发送FIN包,客户端相应ACK,,这个时候,服务器端进入FIN_WAIT2,而客户端进入CLOSE_WAIT状态,如果这个时候,客户端不执行shutdown(SD_SEND)的话,无法给服务器端发送FIN包,则两端的状态都一直不变,这个时候导致关闭一场,socket连接永远无法释放,占用系统资源,所以,一定要注意这点
- closesocket,shutdown区别 recv,send意义 CLOSE_WAIT影响
- [转载]比较好的Socket send recv closesocket shutdown LINGER解释
- shutdown和closesocket区别
- shutdown()及closesocket() 的区别
- socket中shutdown和closesocket的区别
- 网络编程--closesocket(s)与shutdown(s,type)的区别
- 网络编程--closesocket(s)与shutdown(s,type)的区别
- shutdown和closesocket
- send sendto ,recv recvfrom有什么区别
- linux recv\read 和 send/write区别
- read,send,write,recv的区别
- read、write与recv、send的区别
- socket中recv() send() read() write()区别
- closesocket, shutdown, tcp::socket.close()
- closesocket, shutdown, tcp::socket.close()
- socket编程总结(七)int socket/connect()/send()/recv()/close()/shutdown()/recvfrom
- socket编程中的read、write与recv、send的区别
- linux下recv 、send阻塞、非阻塞区别和用法
- Oracle学习计划
- SQL语句、PL/SQL语句、SQL*PLUS语句结束符号
- 数据库崩溃后对redo log的使用
- Scanf连续调用多次并且存在%c的问题
- Errors running builder 'JavaScript Validator' on project
- closesocket,shutdown区别 recv,send意义 CLOSE_WAIT影响
- SAP模块介绍
- Matlab调用DLL方法
- Traffic Server Overview
- #linux# 自定义设置vim的背景颜色
- OpenStack多节点部署(四)——KeyStone
- 程序员推荐简单有效的科学健脑方法
- linux下安装mysql
- 浏览器 和 服务器端长连接的实现方法 (Polling, Comet, Long Polling, WebSocket)