Linux Socket编程中的shutdown和close
来源:百度文库 编辑:神马文学网 时间:2024/04/29 20:52:19
Linux Socket编程中的shutdown和close
1,只要TCP栈的读缓冲里还有未读取(read)数据,则调用close时会直接向对端发送RST。2,shutdown与socket描述符没有关系,即使调用shutdown(fd, SHUT_RDWR)也不会关闭fd,最终还需close(fd)。
3,可以认为shutdown(fd, SHUT_RD)是空操作,因为shutdown后还可以继续从该socket读取数据,这点也许还需要进一步证实。
4,在已发送FIN包后write该socket描述符会引发EPIPE/SIGPIPE。
5,当有多个socket描述符指向同一socket对象时,调用close时首先会递减该对象的引用计数,计数为0时才会发送FIN包结束TCP连接。shutdown不同,只要以SHUT_WR/SHUT_RDWR方式调用即发送FIN包。
6,SO_LINGER与close,当SO_LINGER选项开启但超时值为0时,调用close直接发送RST(这样可以避免进入TIME_WAIT状态,但破坏了TCP协议的正常工作方式),SO_LINGER对shutdown无影响。
7,TCP连接上出现RST与随后可能的TIME_WAIT状态没有直接关系,主动发FIN包方必然会进入TIME_WAIT状态,除非不发送FIN而直接以发送RST结束连接。
Linux Socket编程中的shutdown和close
linux socket 编程
Linux下Socket编程
Linux上TCP的shutdown/close(备忘) - 自由&移动
Linux环境下的Socket编程
oracle中的shutdown和startup命令
linux socket 编程中存在的五个隐患
Linux环境下的Socket编程 - C&C - Linux技术中坚站
网络socket编程指南
Windows Socket编程简介
socket编程原理
Socket编程的面纱
PHP Socket编程起步
[精华] socket编程原理
Linux Socket学习
Linux多线程编程和Linux 2.6下的NPTL
Linux Socket学习(一) - Linux Socket - 【嵌入式Linux】
Linux Socket学习(二) - Linux Socket - 【嵌入式Linux】
Linux Socket学习(三) - Linux Socket - 【嵌入式Linux】
Linux Socket学习(四) - Linux Socket - 【嵌入式Linux】
Linux Socket学习(五) - Linux Socket - 【嵌入式Linux】
Linux Socket学习(六) - Linux Socket - 【嵌入式Linux】
Linux Socket学习(七) - Linux Socket - 【嵌入式Linux】
Linux Socket学习(八) - Linux Socket - 【嵌入式Linux】