LINGER 結構 (winsock.h)

linger 結構會維護特定套接字的相關信息,指定當數據排入佇列傳送時該套接字的行為,並在套接字上呼叫 closesocket 函式。

語法

typedef struct linger {
  u_short l_onoff;
  u_short l_linger;
} LINGER, *PLINGER, *LPLINGER;

成員

l_onoff

類型: u_short

指定套接字是否應該在 closesocket 函式呼叫之後保持開啟,以便傳送佇列數據。 這個成員可以有下列其中一個值。

意義
0
套接字不會保持開啟狀態。 如果 呼叫 setsockopt 函式並將 optname 參數設定為 SO_DONTLINGERoptval 參數為零,則會設定此值。

如果呼叫 setsockopt 函式並將 optname 參數設定為 SO_LINGER,而且在 optval 參數中傳遞的linger 結構將 l_onoff 成員設定為 0,也會設定此值。

套接字將會在指定的時間量內保持開啟狀態。 如果使用 optname 參數設定為 SO_DONTLINGERoptval 參數為非零值呼叫 setockopt 函式,則會設定此值。

如果呼叫 setockopt 函式,並將 optname 參數設定為 SO_LINGER,而且在 optval 參數中傳遞的 linger 結構將 l_onoff 成員設定為非零值,也會設定此值。

l_linger

類型: u_short

linger time in seconds. 此成員會指定 在 closesocket 函式呼叫之後保持開啟的時間長度,以便傳送佇列數據。 只有當 linger 結構的l_onoff成員設定為非零值時,才適用這個成員。

如果 呼叫 setsockopt 函式並將 optname 參數設定為 SO_LINGER,則會設定此值。 傳遞至 setsockopt 函式的 optval 參數必須包含會複製到為套接字維護的內部linger 結構。

備註

linger 結構的l_onoff成員會決定套接字是否應該在 closesocket 函式呼叫之後保留開啟指定的時間,以便傳送佇列數據。 有點令人困惑的是,此成員可以透過兩種方式修改:

  • 呼叫 setsockopt 函式,並將 optname 參數設定為 SO_DONTLINGERoptval 參數會決定l_onoff成員的修改方式。
  • 呼叫 setsockopt 函式,並將 optname 參數設定為 SO_LINGERoptval 參數會指定如何修改l_onoffl_linger成員。

linger 結構的l_linger成員決定套接字應該保持開啟的時間量,以秒為單位。 只有當 linger 結構的l_onoff成員為非零時,才適用這個成員。

若要讓套接字保持開啟狀態,應用程式應 將l_onoff 成員設定為非零值,並將 l_linger 成員設定為所需的逾時以秒為單位。 若要停用剩餘開啟的套接字,應用程式只需要將延遲結構l_onoff成員設定為零。

如果應用程式呼叫 setockopt 函式,並將 optname 參數設定為 SO_DONTLINGER 以將 l_onoff 成員設定為非零值,則不會指定 l_linger 成員的值。 在此情況下,使用的逾時是相依的實作。 如果先前已藉由啟用 SO_LINGER) 來建立套接字 (逾時,服務提供者應恢復此逾時值。

請注意,不建議在非封鎖套接字上啟用非零逾時。

您可以使用 optname 參數設定為 SO_LINGER 來呼叫 getsockopt 函式,以擷取與套接字相關聯之 linger 結構的目前值。

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
標頭 winsock.h (包含 Winsock2.h)

另請參閱

正常關機、移轉選項和套接字關閉

closesocket

getsockopt

setsockopt