共用方式為


LINGER 結構 (winsock2.h)

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

語法

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

成員

l_onoff

類型: u_short

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

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

如果使用 optname 參數設定為 SO_LINGER呼叫 setockopt 函式,而且在 optval 參數中傳遞的 linger 結構l_onoff成員設定為 0,也會設定這個值。

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

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

l_linger

類型: u_short

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

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

備註

linger 結構的l_onoff成員會決定套接字在 closesocket 函式呼叫之後是否應該保持開啟一段時間,以便傳送佇列數據。 有些混淆的是,此成員可以透過兩種方式修改:

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

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

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

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

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

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

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
標頭 winsock2.h (包括 Winsock2.h)

另請參閱

正常關機、擷取選項和套接字關閉

closesocket

getsockopt

setsockopt