struct linger

基本介紹

  • 外文名:struct linger
  • 調用:closesocket函式
  • 兩種方式:優雅的斷開和強制斷開
  • 描述符:一個linger結構體屬性
簡介,結構體數據結構,

簡介

TCP連線斷開的時候調用closesocket函式,有優雅的斷開和強制斷開兩種方式.

結構體數據結構

那么如何設定下線的方式呢?是通過設定socket描述符一個linger結構體屬性。
linger結構體數據結構如下:
struct linger
{
int l_onoff;
int l_linger;
};
有三種組合方式:
第一種
l_onoff = 0;
l_linger忽略
這種方式下,就是在closesocket的時候立刻返回,底層會將未傳送完的數據傳送完成後再釋放資源,也就
是優雅的退出。
第二種
l_onoff非零
l_linger = 0;
這種方式下,在調用closesocket的時候同樣會立刻返回,但不會傳送未傳送完成的數據,而是通過一個RST包強制的關閉socket描述符,也就是強制的退出。
第三種
l_onoff非零
l_linger > 0
這種方式下,在調用closesocket的時候不會立刻返回,核心會延遲一段時間,這個時間就由l_linger得值來決定。如果逾時時間到達之前,傳送完未傳送的數據(包括FIN包)並得到另一端的確認,closesocket會返回正確,socket描述符優雅性退出。否則,closesocket會直接返回錯誤值,未傳送數據丟失,socket描述符被強制性退出。需要注意的時,如果socket描述符被設定為非堵塞型,則closesocket會直接返回值。
Linux下需要包含頭檔案<arpa/inet.h>

相關詞條

熱門詞條

聯絡我們