Параметры сокета IPPROTO_TCP
В следующей таблице описаны параметры сокета IPPROTO_TCP, которые применяются к сокетам, созданным для семейств адресов IPv4 и IPv6 (AF_INET и AF_INET6) с параметром протокола для функции сокета, указанной как TCP (IPPROTO_TCP). Дополнительные сведения о получении и настройке параметров сокета см. на справочных страницах функций gets и setsockopt.
Чтобы перечислить протоколы и обнаружить поддерживаемые свойства для каждого установленного протокола, используйте функцию WSAEnumProtocols, WSCEnumProtocols или WSCEnumProtocols32.
Параметры
Вариант | Получить | Set | Тип Optval | Description |
---|---|---|---|---|
TCP_BSDURGENT | yes | yes | DWORD (логический) | Если значение TRUE, поставщик услуг реализует стиль распространения программного обеспечения Berkeley (BSD) (по умолчанию) для обработки ускоряемой обработки данных. Этот параметр является обратным параметром TCP_EXPEDITED_1122. Этот параметр можно задать только один раз. После установки этого параметра этот параметр не может быть отключен. Этот параметр не требуется реализовать поставщиками услуг. Параметр включен (задано значение TRUE) по умолчанию. |
TCP_EXPEDITED_1122 | yes | yes | DWORD (логический) | Если значение TRUE, поставщик услуг реализует ускоряемые данные, указанные в RFC-1222. В противном случае используется стиль распространения программного обеспечения Berkeley (BSD) (по умолчанию). Этот параметр можно задать только один раз. После установки этого параметра этот параметр не может быть отключен. Этот параметр не требуется реализовать поставщиками услуг. |
TCP_FAIL_CONNECT_ON_ICMP_ERROR | yes | yes | DWORD (логический) | Если значение TRUE, вызов API подключения возвращается после получения ошибки ICMP со значением WSAEHOSTUNREACH. Затем исходный адрес ошибки будет доступен с помощью параметра сокета TCP_ICMP_ERROR_INFO. Если значение FALSE, сокет работает нормально. Значение по умолчанию отключено (задано значение FALSE). Для обеспечения безопасности типов следует использовать функции WSAGetFailConnectOnIcmpError и WSASetFailConnectOnIcmpError вместо прямого использования параметра сокета. |
TCP_ICMP_ERROR_INFO | yes | no | ICMP_ERROR_INFO | Извлекает сведения об ошибке ICMP, полученной сокетом TCP во время неудачного вызова подключения. Допустимо только в сокете TCP, где ранее была включена TCP_FAIL_CONNECT_ON_ICMP_ERROR, и подключение вернуло WSAEHOSTUNREACH. Запрос не блокируется. Если запрос выполнен успешно и возвращенное значение optlen равно 0, то с момента последнего вызова подключения не было получено сообщение об ошибке ICMP. Если сообщение об ошибке ICMP получено, его сведения будут доступны до вызова подключения . Сведения возвращаются в виде ICMP_ERROR_INFO структуры. Для обеспечения безопасности типов следует использовать функцию WSAGetIcmpErrorInfo , а не напрямую использовать параметр сокета. |
TCP_KEEPCNT | yes | yes | DWORD | Возвращает или задает количество сеансов tcp,которые будут отправляться до завершения подключения. Недопустимо задать значение TCP_KEEPCNT больше 255. |
TCP_MAXRT | yes | yes | DWORD | Если это значение не является отрицательным, оно представляет требуемое время ожидания подключения в секундах. Если значение равно -1, оно представляет запрос на отключение времени ожидания подключения (т. е. подключение будет повторно передаваться навсегда). Если время ожидания подключения отключено, время ожидания повторной передачи увеличивается экспоненциально для каждой повторной передачи до максимального значения 60sec, а затем остается там. |
TCP_NODELAY | yes | yes | DWORD (логический) | Включает или отключает алгоритм Nagle для сокетов TCP. Этот параметр отключен (задано значение FALSE) по умолчанию. |
TCP_TIMESTAMPS | yes | yes | DWORD (логический) | Включает или отключает метки времени RFC 1323. Обратите внимание, что существует также глобальная конфигурация меток времени (по умолчанию отключена), "Метки времени" в (set/get)-nettcpsetting. Установка этого параметра сокета переопределяет глобальный параметр конфигурации. |
TCP_FASTOPEN | yes | yes | DWORD (логический) | Включает или отключает протокол RFC 7413 TCP Fast Open, что позволяет начать отправку данных во время трехстороннего подтверждения при открытии подключения. Обратите внимание, что для быстрого открытия следует использовать ConnectEx, чтобы сделать начальное подключение, и указать данные в параметре lpSendBuffer функции, который будет передаваться во время процесса подтверждения. Некоторые данные в lpSendBuffer будут переданы по протоколу Fast Open. |
TCP_KEEPIDLE | yes | yes | DWORD | Возвращает или задает количество секунд, в течение которых tcp-подключение остается бездействующим, прежде чем пробы хранения отправляются в удаленный.
Примечание. |
TCP_KEEPINTVL | yes | yes | DWORD | Возвращает или задает количество секунд, в течение которых TCP-подключение ожидает сохраняемого ответа перед отправкой другой пробы хранения.
Примечание. |
Поддержка Windows для параметров IPPROTO_TCP
Вариант | Windows 10 | Windows 7 | Windows Server 2008 | Windows Vista |
---|---|---|---|---|
TCP_BSDURGENT | yes | yes | yes | yes |
TCP_EXPEDITED_1122 | yes | yes | yes | yes |
TCP_KEEPCNT | Начиная с Windows 10 версии 1703 | |||
TCP_MAXRT | yes | yes | yes | yes |
TCP_NODELAY | yes | yes | yes | yes |
TCP_TIMESTAMPS | yes | yes | yes | yes |
TCP_FASTOPEN | Начиная с Windows 10 версии 1607 |
Вариант | Windows Server 2003 | Windows XP | Windows 2000 | Windows NT4 | Windows 9x/Me | |
---|---|---|---|---|---|---|
TCP_BSDURGENT | yes | yes | yes | yes | ||
TCP_EXPEDITED_1122 | yes | yes | yes | |||
TCP_KEEPCNT | ||||||
TCP_MAXRT | ||||||
TCP_NODELAY | yes | yes | yes | yes | ||
TCP_TIMESTAMPS | ||||||
TCP_FASTOPEN |
Замечания
В пакете SDK, выпущенном для Windows Vista и более поздних версий, организация файлов заголовков изменилась и IPPROTO_TCP уровень определяется в файле заголовка Ws2def.h, который автоматически входит в файл заголовка Winsock2.h. Параметры сокета IPPROTO_TCP, за исключением TCP_BSDURGENT, определяются в файле заголовка Ws2ipdef.h, который автоматически входит в файл заголовка Ws2tcpip.h. Параметр TCP_BSDURGENT по историческим причинам определен в файле заголовка Mswsock.h . Файлы заголовков Ws2def.h и Ws2ipdef.h никогда не должны использоваться напрямую.
Требования
Требование | Значение |
---|---|
Верхний колонтитул |
|