LINGER 結構 (winsock2.h)
linger 結構會維護特定套接字的相關信息,指定當數據排入佇列傳送時該套接字的行為,並在套接字上呼叫 closesocket 函式。
語法
typedef struct linger {
u_short l_onoff;
u_short l_linger;
} LINGER, *PLINGER, *LPLINGER;
成員
l_onoff
類型: u_short
指定套接字是否應該在 closesocket 函式呼叫之後保留開啟一段時間,以允許傳送佇列數據。 這個成員可以有下列其中一個值。
值 | 意義 |
---|---|
|
套接字不會保持開啟狀態。 如果 呼叫 setockopt 函式,並將 optname 參數設定為 SO_DONTLINGER 且 optval 參數為零,則會設定此值。
如果使用 optname 參數設定為 SO_LINGER呼叫 setockopt 函式,而且在 optval 參數中傳遞的 linger 結構l_onoff成員設定為 0,也會設定這個值。 |
|
套接字會保持開啟狀態,以指定的時間量。 如果 呼叫 setockopt 函式,並將 optname 參數設定為 SO_DONTLINGER 且 optval 參數為非零,則會設定此值。
如果將 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_DONTLINGER。 optval 參數會決定如何修改l_onoff成員。
- 呼叫 setockopt 函式,並將 optname 參數設定為 SO_LINGER。 optval 參數會指定如何修改l_onoff和l_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) |