共用方式為


IPPROTO_TCP 通訊端選項

下表描述IPPROTO_TCP通訊端選項,這些選項會套用至針對 IPv4 和 IPv6 位址系列所建立的通訊端 (AF_INET AF_INET6) ,並使用通訊協定參數將 通訊協定 參數套用至指定為 TCP (IPPROTO_TCP) 的 通訊端 函式。 如需取得和設定通訊端選項的詳細資訊,請參閱 getsockoptsetsockopt 函式參考頁面。

若要列舉通訊協定並探索每個已安裝通訊協定的支援屬性,請使用 WSAEnumProtocolsWSCEnumProtocolsWSCEnumProtocols32 函式。

選項。

選項 Get 集合 Optval 類型 描述
TCP_BSDURGENT DWORD (布林值) 如果 為 TRUE,服務提供者會實作 (BSD) 樣式 (預設) 來處理加速資料。 此選項是 TCP_EXPEDITED_1122 選項的反轉。 此選項只能在連線上設定一次。 設定此選項之後,就無法關閉此選項。 服務提供者不需要實作這個選項。 預設會啟用選項, (設定為 TRUE) 。
TCP_EXPEDITED_1122 DWORD (布林值) 如果 為 TRUE,服務提供者會實作 RFC-1222 中指定的加速資料。 否則,會使用預設) (BSD (BSD) 樣式。 此選項只能在連線上設定一次。 設定此選項之後,就無法關閉此選項。 服務提供者不需要實作這個選項。
TCP_FAIL_CONNECT_ON_ICMP_ERROR DWORD (布林值) 如果 為 TRUE,連線 API 呼叫會在收到具有 WSAEHOSTUNREACH 值的 ICMP 錯誤時傳回。 然後,錯誤的來源位址將可透過 [TCP_ICMP_ERROR_INFO通訊端] 選項取得。 如果為 FALSE,則通訊端正常運作。 預設值已停用, (設定為 FALSE) 。 針對型別安全,您應該使用 WSAGetFailConnectOnIcmpErrorWSASetFailConnectOnIcmpError 函式,而不是直接使用通訊端選項。
TCP_ICMP_ERROR_INFO ICMP_ERROR_INFO 擷取失敗連線呼叫期間 TCP 通訊端所收到的 ICMP 錯誤資訊。 只有在先前已啟用TCP_FAIL_CONNECT_ON_ICMP_ERROR的 TCP 通訊端上有效,且 連線 已傳回 WSAEHOSTUNREACH。 查詢未封鎖。 如果成功查詢,且傳回的 optlen 值為 0,則自上次連接呼叫後未收到 ICMP 錯誤。 如果收到 ICMP 錯誤,則會提供其資訊,直到再次呼叫 連線 為止。 資訊會以 ICMP_ERROR_INFO 結構傳回。 針對型別安全,您應該使用 WSAGetIcmpErrorInfo 函式,而不是直接使用通訊端選項。
TCP_KEEPCNT DWORD 取得或設定將在連線終止之前傳送的 TCP 保持運作探查數目。 將TCP_KEEPCNT設定為大於 255 的值不合法。
TCP_MAXRT DWORD 如果此值為非負值,則表示所需的連線逾時,以秒為單位。 如果為 -1,則表示 (停用連線逾時的要求,亦即連線會永久重新傳輸) 。 如果停用連線逾時,重新傳輸逾時會針對每個重新傳輸以指數方式增加,最多為 60 秒的最大值,然後維持在該處。
TCP_NODELAY DWORD (布林值) 啟用或停用 TCP 通訊端的 Nagle 演算法。 預設會停用此選項, (設為 FALSE) 。
TCP_TIMESTAMPS DWORD (布林值) 啟用或停用 RFC 1323 時間戳記。 請注意,在 set/get) -nettcpsetting (中,也會關閉時間戳記 (預設值的通用群組態) 「Timestamps」。 設定此通訊端選項會覆寫該通用群組態設定。
TCP_FASTOPEN DWORD (布林值) 啟用或停用 RFC 7413 TCP 快速開啟,這可讓您在開啟連線的三向交握階段開始傳送資料。 請注意,若要使用快速開啟,您應該使用 ConnectEx 來建立初始連線,並在該函式的 lpSendBuffer 參數中指定要在交握過程中傳輸的資料。 lpSendBuffer中的部分資料將會在 Fast Open 通訊協定下傳輸。
TCP_KEEPIDLE DWORD 取得或設定 TCP 連線在傳送至遠端之前,TCP 連線會保持閒置的秒數。

注意:
從 Windows 10 1709 版開始,可以使用此選項。


TCP_KEEPINTVL DWORD 取得或設定 TCP 連線在傳送另一個持續探查之前,等候持續回應的秒數。

注意:
從 Windows 10 1709 版開始,可以使用此選項。


IPPROTO_TCP選項的 Windows 支援

選項 Windows 10 Windows 7 Windows Server 2008 Windows Vista
TCP_BSDURGENT x x x x
TCP_EXPEDITED_1122 x x x x
TCP_KEEPCNT 從 Windows 10 1703 版開始
TCP_MAXRT x x x x
TCP_NODELAY x x x x
TCP_TIMESTAMPS x x x x
TCP_FASTOPEN 從 Windows 10 1607 版開始

  選項 Windows Server 2003 Windows XP Windows 2000 Windows NT4 Windows 9x/Me
TCP_BSDURGENT x x x x
TCP_EXPEDITED_1122 x x x
TCP_KEEPCNT
TCP_MAXRT
TCP_NODELAY x x x x
TCP_TIMESTAMPS
TCP_FASTOPEN

備註

在 Microsoft Windows 軟體發展工具組 (SDK) 針對 Windows Vista 和更新版本發行,標頭檔的組織已變更, IPPROTO_TCP 層級定義于 Ws2def.h 標頭檔中,該檔案會自動包含在 Winsock2.h 標頭檔中。 IPPROTO_TCP通訊端選項除了TCP_BSDURGENT之外,也會定義在Ws2ipdef.h標頭檔中自動包含在Ws2tcpip.h標頭檔中。 基於歷史原因 ,TCP_BSDURGENT 選項是在 Mswsock.h 標頭檔中定義。 不應該直接使用 Ws2def.hWs2ipdef.h 標頭檔。

規格需求

需求
標頭
Ws2def.h (包含 Winsock2.h) ;
Windows Server 2003、Windows XP 和 Windows 2000 上的 Winsock2.h