原文:socket关闭连接与close和shutdown的区别及优雅关闭socket的方法:SO_LINGER

close fd 调用会将描述字的引用计数减 ,只有当socket描述符的引用计数为 时,才关闭socket,即发送FIN包,因此,在fork 模式中,父进程在accept 返回后,fork 子进程,由子进程处理connfd,而父进程将close connfd 由于connfd这个socket描述符的引用计数不为 ,因此并不引发FIN,所以就没有关闭和客户端的连接。 更新 最近又理解了一下,cl ...

2019-06-22 13:00 0 3661 推荐指数:

查看详情

SOCKET:SO_LINGER 选项

  好多次接触到SO_LINGER选项,但总是忘了这是干什么用的。现在整理一下,我才明白这个参数是用来设定“SOCKETCLOSE时候是否等待缓冲区发送完成”这个特性的。下面是一些详细的说明。 setsockopt 设置 SO_LINGER 选项   此选项指定函数close对面向连接 ...

Thu Apr 17 19:38:00 CST 2014 0 2910
socket shutdownclose区别

http://www.jianshu.com/p/eecab8d50697 shutdown() doesn't actually close the file descriptor—it just changes its usability. To free a socket ...

Mon Jul 10 23:29:00 CST 2017 0 12548
socket shutdownclose 函数 的区别

假设server和client 已经建立了连接,server调用了close, 发送FIN 段给client(其实不一定会发送FIN段,后面再说),此时server不能再通过socket发送和接收数据,此时client调用read,如果接收到FIN 段会返回0,但client此时还是可以write ...

Thu Sep 04 23:41:00 CST 2014 0 2423
python close()是假象,真正关闭Socket方法

背景: 工作中自己用python写了一个tcp工具,然后用while循环一直接收消息,并且打印出来。然后正常close发现设备并没有离线,然后用了临时的规避方案,发现其实是一直阻塞在recv()接收方法里面,只要传输一条协议,让recv()吃到消息即可正常运行while来让其break退出 ...

Sat Aug 26 01:20:00 CST 2017 1 9767
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM