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