socket的shutdown和close
来源:互联网 发布:淘宝上哪个符点是真的 编辑:程序博客网 时间:2024/05/16 18:44
1. 自己写的socket的shutdown和close相关测试
执行write时受到信号SIGPIPE,服务器端程序退出。
客户端一直处于CLOSE_WAIT状态 recv执行该语句时,server向client发送了FIN,所以netstat显示server为FIN_WAIT_2,缓冲区为空;client为CLOSE_WAIT,接收缓冲区有1B。
过了5分钟server一直处于FIN_WAIT_2状态,recv一直阻塞【如果有数据来,在接收缓冲区,那么recv成功】 3shutdown(fd, SHUT_RDWR)【不能读写】write收到SIGPIPE信号,程序退出,netstat显示server处于FIN_WAIT_2状态,2个buffer为空,通过tcpdump抓包可以看到server向client发送了一个FIN,并且client回复了ACK;而client端为CLOSE_WAIT状态,接收缓存区有1B,发送缓冲区为空。因为一直在pause()等待信号的到来 recv返回0,netstat同上 4shutdown(fd, 0)+closewriteclose发送reset过去,server和client的socket均变为closed状态。
Write返回-1,errno=9 recv同上 5shutdown(fd,1)+closewrite返回-1,errno=9;
执行shutdown时,发送FIN,执行close时发送RST.netstat显示两端均为closed状态。再执行write/recv必然errno=9 recv同上 6shutdown(fd, SHUT_RDWR)+closewrite同上 recv同上 7多次相同的shutdown(fd, n) 只有第一次的有效,后面的无效 8shutdown(fd,0)shutdown(fd,1)第一次shutdown没有发送FIN,第二次发送FIN,到状态FIN_WAIT_2. shutdown(fd,2) 9closewriteclose发送reset过去,server和client的socket均变为closed状态。
本进程的Write返回-1,errno=9
其他进程可以继续write/recv,参见bwserver中fork那段程序 recv同上
2.文字补充说明:
- socket的shutdown和close
- socket的shutdown和close
- socket close和shutdown
- socket的close和shutdown的区别
- socket关闭的close和shutdown区别
- socket关闭的close和shutdown区别
- socket关闭的close和shutdown区别
- socket关闭的close和shutdown区别
- socket关闭的close和shutdown区别
- socket关闭close和shutdown的区别
- socket关闭的close和shutdown区别
- linux下socket的close和shutdown
- socket关闭的close和shutdown区别
- socket关闭的close和shutdown区别
- socket shutdown和close的区别
- socket关闭的close和shutdown区别
- linux下socket的close和shutdown
- linux下socket的close和shutdown
- 学生信息管理系统之模棱两可
- python join
- 项目中使用XML方式去取数据插入数据代码
- Linux 混杂设备的应用
- JavaScript学习笔记(三十七) 原型继承
- socket的shutdown和close
- IO:FileReader
- [置顶] 基于遗传算法求解车辆路径问题
- hdu-汉字统计
- LCA 暂存 1471 URAL
- hdu 2955 Robberies (01背包)
- poj1113
- Android之Adapter用法总结
- 理解ThreadLocal