Opções de soquete IPPROTO_TCP

A tabela a seguir descreve IPPROTO_TCP opções de soquete que se aplicam a soquetes criados para as famílias de endereços IPv4 e IPv6 (AF_INET e AF_INET6) com o parâmetro de protocolo para a função de soquete especificada como TCP (IPPROTO_TCP). Consulte as páginas de referência da função getsockopt e setsockopt para obter mais informações sobre como obter e definir opções de soquete.

Para enumerar protocolos e descobrir propriedades com suporte para cada protocolo instalado, use a função WSAEnumProtocols, WSCEnumProtocols ou WSCEnumProtocols32 .

Opções

Opção Obter Definir Tipo optval Descrição
TCP_BSDURGENT sim sim DWORD (booliano) Se TRUE, o provedor de serviços implementará o estilo de Distribuição de Software de Berkeley (BSD) (padrão) para lidar com dados agilizados. Essa opção é o inverso da opção TCP_EXPEDITED_1122. Essa opção pode ser definida na conexão apenas uma vez. Depois que essa opção estiver ativada, essa opção não poderá ser desativada. Essa opção não é necessária para ser implementada pelos provedores de serviços. A opção está habilitada (definida como TRUE) por padrão.
TCP_EXPEDITED_1122 sim sim DWORD (booliano) Se TRUE, o provedor de serviços implementará os dados agilizados conforme especificado em RFC-1222. Caso contrário, o estilo de Distribuição de Software de Berkeley (BSD) (padrão) será usado. Essa opção pode ser definida na conexão apenas uma vez. Depois que essa opção estiver ativada, essa opção não poderá ser desativada. Essa opção não é necessária para ser implementada pelos provedores de serviços.
TCP_FAIL_CONNECT_ON_ICMP_ERROR sim sim DWORD (booliano) Se TRUE, uma chamada à API de conexão retornará após a recepção de um erro ICMP com o valor WSAEHOSTUNREACH. O endereço de origem do erro estará disponível por meio da opção de soquete TCP_ICMP_ERROR_INFO. Se FALSE, o soquete se comportará normalmente. O padrão está desabilitado (definido como FALSE). Para segurança de tipo, você deve usar as funções WSAGetFailConnectOnIcmpError e WSASetFailConnectOnIcmpError em vez de usar a opção de soquete diretamente.
TCP_ICMP_ERROR_INFO sim não ICMP_ERROR_INFO Recupera as informações de um erro ICMP recebido pelo soquete TCP durante uma chamada de conexão com falha. Válido somente em um soquete TCP em que TCP_FAIL_CONNECT_ON_ICMP_ERROR foi habilitado anteriormente e connect retornou WSAEHOSTUNREACH. A consulta não está bloqueando. Se consultado com êxito e o valor optlen retornado for 0, nenhum erro ICMP foi recebido desde a última chamada de conexão. Se um erro ICMP tiver sido recebido, suas informações estarão disponíveis até que a conexão seja chamada novamente. As informações são retornadas como uma estrutura ICMP_ERROR_INFO . Para segurança de tipo, você deve usar a função WSAGetIcmpErrorInfo em vez de usar a opção de soquete diretamente.
TCP_KEEPCNT sim sim DWORD Obtém ou define o número de investigações de keep alive do TCP que serão enviadas antes que a conexão seja encerrada. É ilegal definir TCP_KEEPCNT para um valor maior que 255.
TCP_MAXRT sim sim DWORD Se esse valor não for negativo, ele representará o tempo limite de conexão desejado em segundos. Se for -1, ele representará uma solicitação para desabilitar o tempo limite da conexão (ou seja, a conexão será retransmitida para sempre). Se o tempo limite de conexão estiver desabilitado, o tempo limite de retransmissão aumentará exponencialmente para cada retransmissão até o valor máximo de 60seg e permanecerá lá.
TCP_NODELAY sim sim DWORD (booliano) Habilita ou desabilita o algoritmo Nagle para soquetes TCP. Essa opção está desabilitada (definida como FALSE) por padrão.
TCP_TIMESTAMPS sim sim DWORD (booliano) Habilita ou desabilita carimbos de data/hora RFC 1323. Observe que também há uma configuração global para carimbos de data/hora (o padrão está desativado), "Carimbos de data/hora" em (set/get)-nettcpsetting. Definir essa opção de soquete substitui essa configuração global.
TCP_FASTOPEN sim sim DWORD (booliano) Habilita ou desabilita o RFC 7413 TCP Fast Open, que permite que você comece a enviar dados durante a fase de handshake de três vias de abertura de uma conexão. Observe que, para fazer uso de aberturas rápidas, você deve usar ConnectEx para fazer a conexão inicial e especificar dados no parâmetro lpSendBuffer dessa função a serem transferidos durante o processo de handshake. Alguns dos dados no lpSendBuffer serão transferidos sob o protocolo Fast Open.
TCP_KEEPIDLE sim sim DWORD Obtém ou define o número de segundos em que uma conexão TCP permanecerá ociosa antes que as investigações keepalive sejam enviadas para o remoto.

Observação:
Essa opção está disponível a partir do Windows 10, versão 1709.


TCP_KEEPINTVL sim sim DWORD Obtém ou define o número de segundos que uma conexão TCP aguardará por uma resposta keepalive antes de enviar outra investigação keepalive.

Observação:
Essa opção está disponível a partir do Windows 10, versão 1709.


Suporte do Windows para opções de IPPROTO_TCP

Opção Windows 10 Windows 7 Windows Server 2008 Windows Vista
TCP_BSDURGENT x x x x
TCP_EXPEDITED_1122 x x x x
TCP_KEEPCNT A partir do Windows 10, versão 1703
TCP_MAXRT x x x x
TCP_NODELAY x x x x
TCP_TIMESTAMPS x x x x
TCP_FASTOPEN A partir do Windows 10, versão 1607

  Opção 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

Comentários

No Microsoft Windows Software Development Kit (SDK) lançado para Windows Vista e posterior, a organização de arquivos de cabeçalho foi alterada e IPPROTO_TCP nível é definido no arquivo de cabeçalho Ws2def.h que é incluído automaticamente no arquivo de cabeçalho Winsock2.h . As opções de soquete IPPROTO_TCP , com exceção de TCP_BSDURGENT, são definidas no arquivo de cabeçalho Ws2ipdef.h que é incluído automaticamente no arquivo de cabeçalho Ws2tcpip.h . A opção TCP_BSDURGENT por motivos históricos é definida no arquivo de cabeçalho Mswsock.h . Os arquivos de cabeçalho Ws2def.h e Ws2ipdef.h nunca devem ser usados diretamente.

Requisitos

Requisito Valor
parâmetro
Ws2def.h (inclua Winsock2.h);
Winsock2.h no Windows Server 2003, Windows XP e Windows 2000