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 das funções 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 (booleano) | Se TRUE, o provedor de serviços implementará o estilo Berkeley Software Distribution (BSD) (padrão) para lidar com dados expressos. Essa opção é o inverso da opção TCP_EXPEDITED_1122. Esta opção pode ser definida na conexão apenas uma vez. Uma vez que esta opção é ativada, esta opção não pode ser desativada. Essa opção não precisa ser implementada pelos provedores de serviços. A opção está habilitada (definida como TRUE) por padrão. |
TCP_EXPEDITED_1122 | sim | sim | DWORD (booleano) | Se TRUE, o provedor de serviços implementará os dados expressos conforme especificado no RFC-1222. Caso contrário, o estilo Berkeley Software Distribution (BSD) (padrão) será usado. Esta opção pode ser definida na conexão apenas uma vez. Uma vez que esta opção é ativada, esta opção não pode ser desativada. Essa opção não precisa ser implementada pelos provedores de serviços. |
TCP_FAIL_CONNECT_ON_ICMP_ERROR | sim | sim | DWORD (booleano) | Se TRUE, uma chamada de 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 é 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 apenas em um soquete TCP em que TCP_FAIL_CONNECT_ON_ICMP_ERROR foi habilitado anteriormente e a conexão 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 foi 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 testes TCP keep alive que serão enviados antes que a conexão seja encerrada. É ilegal definir TCP_KEEPCNT para um valor superior a 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, representa 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 aumenta exponencialmente para cada retransmissão até seu valor máximo de 60 segundos e permanece lá. |
TCP_NODELAY | sim | sim | DWORD (booleano) | Habilita ou desabilita o algoritmo Nagle para soquetes TCP. Esta opção está desativada (definida como FALSE) por padrão. |
TCP_TIMESTAMPS | sim | sim | DWORD (booleano) | 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 é desativado), "Timestamps" em (set/get)-nettcpsetting. A configuração dessa opção de soquete substitui essa definição de configuração global. |
TCP_FASTOPEN | sim | sim | DWORD (booleano) | 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 da abertura de uma conexão. Observe que, para usar aberturas rápidas, você deve usar o ConnectEx para fazer a conexão inicial e especificar os dados no parâmetro lpSendBuffer dessa função a serem transferidos durante o processo de handshake. Alguns dos dados em lpSendBuffer serão transferidos sob o protocolo Fast Open. |
TCP_KEEPIDLE | sim | sim | DWORD | Obtém ou define o número de segundos que uma conexão TCP permanecerá ociosa antes que as sondas keepalive sejam enviadas para o remoto.
Observação: |
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 sonda keepalive.
Observação: |
Suporte do Windows para opções de IPPROTO_TCP
Opção | Windows 10 | Windows 7 | Windows Server 2008 | Windows Vista |
---|---|---|---|---|
TCP_BSDURGENT | sim | sim | sim | sim |
TCP_EXPEDITED_1122 | sim | sim | sim | sim |
TCP_KEEPCNT | A partir do Windows 10, versão 1703 | |||
TCP_MAXRT | sim | sim | sim | sim |
TCP_NODELAY | sim | sim | sim | sim |
TCP_TIMESTAMPS | sim | sim | sim | sim |
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 | sim | sim | sim | sim | ||
TCP_EXPEDITED_1122 | sim | sim | sim | |||
TCP_KEEPCNT | ||||||
TCP_MAXRT | ||||||
TCP_NODELAY | sim | sim | sim | sim | ||
TCP_TIMESTAMPS | ||||||
TCP_FASTOPEN |
Comentários
No Microsoft Windows Software Development Kit (SDK) lançado para Windows Vista e posterior, a organização dos 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 |
---|---|
Cabeçalho |
|