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 dede soqueteespecificada como TCP (IPPROTO_TCP). Consulte as páginas de referência getsockopt e função setsockopt para obter mais informações sobre como obter e definir opções de soquete.
Para enumerar protocolos e descobrir propriedades suportadas para cada protocolo instalado, use o WSAEnumProtocols, WSCEnumProtocolsou WSCEnumProtocols32 função.
Opções
Opção | Obter | Conjunto | Tipo de optval | Descrição |
---|---|---|---|---|
TCP_BSDURGENT | Sim | Sim | DWORD (Booleano) | Se TRUE, o provedor de serviços implementa o estilo Berkeley Software Distribution (BSD) (padrão) para lidar com dados acelerados. Esta 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. Esta opção não tem de ser implementada pelos prestadores de serviços. A opção está ativada (definida como TRUE) por padrão. |
TCP_EXPEDITED_1122 | Sim | Sim | DWORD (Booleano) | Se TRUE, o provedor de serviços implementa os dados acelerados conforme especificado no RFC-1222. Caso contrário, o estilo Berkeley Software Distribution (BSD) (padrão) é 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. Esta opção não tem de ser implementada pelos prestadores 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 receção de um erro ICMP com o valor WSAEHOSTUNREACH. O endereço de origem do erro estará disponível através da opção de soquete TCP_ICMP_ERROR_INFO. Se FALSO, o soquete se comporta normalmente. O padrão está desativado (definido como FALSE). Para segurança de tipo, você deve usar o WSAGetFailConnectOnIcmpError e funções de 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 onde TCP_FAIL_CONNECT_ON_ICMP_ERROR foi habilitado anteriormente e conexão retornou WSAEHOSTUNREACH. A consulta não está bloqueada. 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 de conexão seja chamado novamente. As informações são retornadas como uma estrutura ICMP_ERROR_INFO. Para segurança de tipo, você deve usar a função de 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 fixar TCP_KEEPCNT num valor superior a 255. |
TCP_MAXRT | Sim | Sim | DWORD | Se esse valor não for negativo, ele representa o tempo limite de conexão desejado em segundos. Se for -1, representa um pedido para desativar o tempo limite da ligação (ou seja, a ligação será retransmitida para sempre). Se o tempo limite de conexão estiver desativado, o tempo limite de retransmissão aumenta exponencialmente para cada retransmissão até seu valor máximo de 60 segundos e, em seguida, 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 está desativado), "Timestamps" em (set/get)-nettcpsetting. A definição dessa opção de soquete substitui essa definição de configuração global. |
TCP_FASTOPEN | Sim | Sim | DWORD (Booleano) | Habilita ou desabilita RFC 7413 TCP Fast Open, que permite que você comece a enviar dados durante a fase de handshake de três vias para abrir uma conexão. Observe que, para fazer uso de aberturas rápidas, você deve usar ConnectEx para fazer a conexão inicial e especificar os dados no parâmetro lpSendBuffer 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 controle remoto.
Nota: |
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.
Nota: |
Suporte do Windows para opções de IPPROTO_TCP
Opção | Janelas 10 | Janelas 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 | Janelas XP | Janelas 2000 | Janelas 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 é automaticamente incluído no arquivo de cabeçalho Ws2tcpip.h. A opção TCP_BSDURGENT por razões históricas é definida no arquivo de cabeçalho Mswsock.h. O Ws2def.h e Ws2ipdef.h arquivos de cabeçalho nunca devem ser usados diretamente.
Requerimentos
Exigência | Valor |
---|---|
Cabeçalho |
|