關於SO LINGER的使用說明

2021-08-30 05:46:25 字數 730 閱讀 3651

so_linger

此選項指定函式close對面向連線的協議如何操作(如tcp)。預設close操作是立即返回,如果有資料殘留在套介面緩衝區中則系統將試著將這些資料傳送給對方。

so_linger選項用來改變此預設設定。使用如下結構:

struct linger ;

有下列三種情況:

l_onoff為0,則該選項關閉,l_linger的值被忽略,等於預設情況,close立即返回;

l_onoff為非0,l_linger為0,則套介面關閉時tcp夭折連線,tcp將丟棄保留在套介面傳送緩衝區中的任何資料並傳送乙個rst給對方,而不是通常的四分組終止序列,這避免了time_wait狀態;

l_onoff 為非0,l_linger為非0,當套介面關閉時核心將拖延一段時間(由l_linger決定)。如果套介面緩衝區中仍殘留資料,程序將處於睡眠狀態,直 到(a)所有資料傳送完且被對方確認,之後進行正常的終止序列(描述字訪問計數為0)或(b)延遲時間到。此種情況下,應用程式檢查close的返回值是非常重要的,如果在資料傳送完並被確認前時間到,close將返回ewouldblock錯誤且套介面傳送緩衝區中的任何資料都丟失。close的成功返回僅告訴我們傳送的資料(和fin)已由對方tcp確認,它並不能告訴我們對方應用程序是否已讀了資料。如果套介面設為非阻塞的,它將不等待close完 成。

l_linger的單位依賴於實現,4.4bsd假設其單位是時鐘滴答(百分之一秒),但posix.1g規定單位為秒。

**:

關於SO REUSEADDR的使用說明

參考windows 網路程式設計技術 1.可以對乙個埠進行多次繫結,一般這個是不支援使用的 2.對於監聽套接字,比較特殊。如果你定義了so reuseaddr,並且讓兩個套接字在同乙個埠上進行接聽,那麼對於由誰來accept,就會出現歧義。如果你定義個so reuseaddr,只定義乙個套接字在乙個...

關於SafeArray的使用說明

猛料資料,首先介紹safearray使用,在介紹safearray中的結構。看完該節文章,safearray的陌生感一掃而去。safearray 在ado程式設計中經常使用。它的主要目的是用於automation中的陣列型引數的傳遞。因為在網路環境中,陣列是不能直接傳遞的,而必須將其包裝成 safe...

關於SO REUSEADDR的使用說明

1.可以對乙個埠進行多次繫結,一般這個是不支援使用的 2.對於監聽套接字,比較特殊。如果你定義了so reuseaddr,並且讓兩個套接字在同乙個埠上進行接聽,那麼對於由誰來accept,就會出現歧 義。如果你定義個so reuseaddr,只定義乙個套接字在乙個埠上進行監聽,如果伺服器出現意外而導...