IPPROTO_TCP 套接字选项
下表介绍了 IPPROTO_TCP 套接字选项,这些选项适用于为 IPv4 和 IPv6 地址系列(AF_INET和AF_INET6)创建的套接字,并将 协议 参数应用于指定为 TCP(IPPROTO_TCP) 的 套接字 函数。 有关获取和设置套接字选项的更多信息,请参阅 getsockopt 和 setsockopt 函数参考页。
要枚举协议并发现每个已安装协议的支持属性,请使用 WSAEnumProtocols、WSCEnumProtocols 或 WSCEnumProtocols32 函数。
选项
选项 | Get | 设置 | Optval 类型 | 说明 |
---|---|---|---|---|
TCP_BSDURGENT | 是 | 是 | DWORD (布尔值) | 如果 为 TRUE,服务提供商将实现 Berkeley Software Distribution (BSD) 样式(默认)来处理加速数据。 此选项是TCP_EXPEDITED_1122选项的反函数。 此选项只能在连接上设置一次。 设置此选项后,无法关闭此选项。 不需要由服务提供商实现此选项。 默认情况下,此选项处于启用状态(设置为 TRUE)。 |
TCP_EXPEDITED_1122 | 是 | 是 | DWORD (布尔值) | 如果 为 TRUE,则服务提供商实现 RFC-1222 中指定的加速数据。 否则,将使用伯克利软件分发(BSD)样式(默认)。 此选项只能在连接上设置一次。 设置此选项后,无法关闭此选项。 不需要由服务提供商实现此选项。 |
TCP_FAIL_CONNECT_ON_ICMP_ERROR | 是 | 是 | DWORD (布尔值) | 如果 为 TRUE,则当收到具有值 WSAEHOSTUNREACH 的 ICMP 错误时,连接 API 调用将返回。 然后,该错误的源地址将通过TCP_ICMP_ERROR_INFO套接字选项提供。 如果 为 FALSE,则套接字的行为正常。 默认值已禁用(设置为 FALSE)。 对于类型安全性,应使用 WSAGetFailConnectOnIcmpError 和 WSASetFailConnectOnIcmpError 函数,而不是直接使用套接字选项。 |
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 时间戳。 请注意,时间戳(默认值为 off)、(set/get)-nettcpsetting 中的“Timestamps”也有全局配置。 设置此套接字选项将替代全局配置设置。 |
TCP_FASTOPEN | 是 | 是 | DWORD (布尔值) | 启用或禁用 RFC 7413 TCP 快速打开,这使你可以在打开连接的三向握手阶段开始发送数据。 请注意,若要使用快速打开,应使用 ConnectEx 进行初始连接,并在该函数的 lpSendBuffer 参数中指定要在握手过程中传输的数据。 lpSendBuffer 中的某些数据将在快速开放协议下传输。 |
TCP_KEEPIDLE | 是 | 是 | DWORD | 获取或设置 TCP 连接在发送到远程之前保持空闲状态的秒数。
注意: |
TCP_KEEPINTVL | 是 | 是 | DWORD | 获取或设置 TCP 连接在发送另一个保留探测之前等待保持响应的秒数。
注意: |
IPPROTO_TCP选项的 Windows 支持
选项 | Windows 10 | Windows 7 | Windows Server 2008 | Windows Vista |
---|---|---|---|---|
TCP_BSDURGENT | 是 | 是 | 是 | 是 |
TCP_EXPEDITED_1122 | 是 | 是 | 是 | 是 |
TCP_KEEPCNT | 从 Windows 10 版本 1703 开始 | |||
TCP_MAXRT | 是 | 是 | 是 | 是 |
TCP_NODELAY | 是 | 是 | 是 | 是 |
TCP_TIMESTAMPS | 是 | 是 | 是 | 是 |
TCP_FASTOPEN | 从 Windows 10 版本 1607 开始 |
选项 | Windows Server 2003 | Windows XP | Windows 2000 | Windows NT4 | Windows 9x/Me | |
---|---|---|---|---|---|---|
TCP_BSDURGENT | 是 | 是 | 是 | 是 | ||
TCP_EXPEDITED_1122 | 是 | 是 | 是 | |||
TCP_KEEPCNT | ||||||
TCP_MAXRT | ||||||
TCP_NODELAY | 是 | 是 | 是 | 是 | ||
TCP_TIMESTAMPS | ||||||
TCP_FASTOPEN |
注解
在为 Windows Vista 及更高版本发布的 Microsoft Windows 软件开发工具包(SDK)中,头文件的组织已更改,IPPROTO_TCP级别在 Winsock2.h 头文件中自动包含的 Ws2def.h 头文件中定义。 IPPROTO_TCP套接字选项(TCP_BSDURGENT除外)在 Ws2ipdef.h 头文件中定义,该文件自动包含在 Ws2tcpip.h 头文件中。 出于 历史原因,TCP_BSDURGENT 选项在 Mswsock.h 头文件中定义。 切勿直接使用 Ws2def.h 和 Ws2ipdef.h 头文件。
要求
要求 | 值 |
---|---|
头文件 |
|