原文: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