一例TCP優雅關閉失敗SO_LINGER選項未起作用

通過setsockopt :SO_LINGER 選項可以指定函數close對面向連接的協議如何操作。

內核缺省close操作是立即返回,如果有數據殘留在套接口緩衝區中則系統將試着將這些數據發送給對方。

但是如果close時,接收緩衝區有未接收數據,則操作系統會直接發送RST報文結束鏈接,也就是說TCP鏈接不會優雅關閉。

所以,如果希望鏈接被優雅關閉,應在接受完緩衝區內的所有數據後再調用close。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章