Opções de soquete SOL_SOCKET
As tabelas a seguir descrevem SOL_SOCKET opções de soquete. 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 .
Algumas opções de soquete exigem mais explicação do que essas tabelas podem transmitir; essas opções contêm links para páginas adicionais.
Observação
Todas as opções de soquete SOL_SOCKET se aplicam igualmente a IPv4 e IPv6 (exceto SO_BROADCAST, já que a difusão não é implementada no IPv6).
Opções de soquete SOL_SOCKET
Opção | Obter | Definir | Tipo optval | Descrição |
---|---|---|---|---|
PVD_CONFIG | sim | sim | char [] | Um objeto de estrutura de dados opaco que contém informações de configuração para o provedor de serviços. Essa opção depende da implementação. |
SO_ACCEPTCONN | sim | DWORD (booliano) | Retorna se um soquete está no modo de escuta. Essa opção é válida apenas para protocolos orientados à conexão. | |
SO_BROADCAST | sim | sim | DWORD (booliano) | Configure um soquete para enviar dados de transmissão. Essa opção é válida apenas para protocolos que dão suporte à difusão (IPX e UDP, por exemplo). |
SO_BSP_STATE | sim | CSADDR_INFO | Retorna o endereço local, a porta local, o endereço remoto, a porta remota, o tipo de soquete e o protocolo usados por um soquete. Consulte a referência de SO_BSP_STATE para obter mais informações. | |
SO_CONDITIONAL_ACCEPT | sim | sim | DWORD (booliano) | Indica se as conexões de entrada devem ser aceitas ou rejeitadas pelo aplicativo, não pela pilha de protocolo. Consulte a referência de SO_CONDITIONAL_ACCEPT para obter mais informações. |
SO_CONNDATA | sim | sim | char [] | Dados adicionais, não no fluxo de dados de rede normal, que são enviados com solicitações de rede para estabelecer uma conexão. Essa opção é usada por protocolos herdados, como DECNet, OSI TP4 e outros. Essa opção não é compatível com o protocolo TCP/IP no Windows. |
SO_CONNDATALEN | sim | DWORD | O comprimento, em bytes, de dados adicionais, não no fluxo de dados de rede normal, que é enviado com solicitações de rede para estabelecer uma conexão. Essa opção é usada por protocolos herdados, como DECNet, OSI TP4 e outros. Essa opção não é compatível com o protocolo TCP/IP no Windows. | |
SO_CONNECT_TIME | sim | DWORD | Retorna o número de segundos em que um soquete foi conectado. Essa opção só é válida para protocolos orientados à conexão. | |
SO_CONNOPT | sim | sim | char [] | Dados de opção de conexão adicionais, não no fluxo de dados de rede normal, que são enviados com solicitações de rede para estabelecer uma conexão. Essa opção é usada por protocolos herdados, como DECNet, OSI TP4 e outros. Essa opção não é compatível com o protocolo TCP/IP no Windows. |
SO_CONNOPTLEN | sim | DWORD | O comprimento, em bytes, dos dados de opção de conexão, não no fluxo de dados de rede normal, que é enviado com solicitações de rede para estabelecer uma conexão. Essa opção é usada por protocolos herdados, como DECNet, OSI TP4 e outros. Essa opção não é compatível com o protocolo TCP/IP no Windows. | |
SO_DISCDATA | sim | sim | char [] | Dados adicionais, não no fluxo de dados de rede normal, que são enviados com solicitações de rede para desconectar uma conexão. Essa opção é usada por protocolos herdados, como DECNet, OSI TP4 e outros. Essa opção não é compatível com o protocolo TCP/IP no Windows. |
SO_DISCDATALEN | sim | DWORD | O comprimento, em bytes, de dados adicionais, não no fluxo de dados de rede normal, que é enviado com solicitações de rede para desconectar uma conexão. Essa opção é usada por protocolos herdados, como DECNet, OSI TP4 e outros. Essa opção não é compatível com o protocolo TCP/IP no Windows. | |
SO_DISCOPT | sim | sim | char [] | Dados de opção de desconexão adicionais, não no fluxo de dados de rede normal, que são enviados com solicitações de rede para desconectar uma conexão. Essa opção é usada por protocolos herdados, como DECNet, OSI TP4 e outros. Essa opção não é compatível com o protocolo TCP/IP no Windows. |
SO_DISCOPTLEN | sim | DWORD | O comprimento, em bytes, de dados de opção de desconexão adicionais, não no fluxo de dados de rede normal, que é enviado com solicitações de rede para desconectar uma conexão. Essa opção é usada por protocolos herdados, como DECNet, OSI TP4 e outros. Não há suporte para essa opção no protocolo TCP/IP no Windows. | |
SO_DEBUG | sim | sim | DWORD (booliano) | Habilite a saída de depuração. Atualmente, os provedores da Microsoft não geram nenhuma informação de depuração. |
SO_DONTLINGER | sim | sim | DWORD (booliano) | Indica o estado do membro l_onoff da estrutura persistente associada a um soquete. Se esse membro for diferente de zero, um soquete permanecerá aberto por um período de tempo especificado após uma chamada de função closesocket para permitir que os dados enfileirados sejam enviados. Essa opção só é válida para protocolos confiáveis e orientados à conexão. |
SO_DONTROUTE | sim | sim | DWORD (booliano) | Indica que os dados de saída devem ser enviados em qualquer interface à qual o soquete esteja associado e não um roteado em alguma outra interface. Essa opção é válida apenas para protocolos orientados a mensagens. Os provedores da Microsoft ignoram silenciosamente essa opção e sempre consultam a tabela de roteamento para encontrar a interface de saída apropriada. |
SO_ERROR | sim | DWORD | Retorna o último código de erro neste soquete. Esse código de erro por soquete nem sempre é definido imediatamente. | |
SO_EXCLUSIVEADDRUSE | sim | sim | DWORD (booliano) | Impede que qualquer outro soquete seja associado ao mesmo endereço e porta. Essa opção deve ser definida antes de chamar a função bind . Consulte a referência SO_EXCLUSIVEADDRUSE para obter mais informações. |
SO_GROUP_ID | sim | unsigned int | Essa opção de soquete é reservada e não deve ser usada. | |
SO_GROUP_PRIORITY | sim | sim | INT | Essa opção de soquete é reservada e não deve ser usada. |
SO_KEEPALIVE | sim | sim | DWORD (booliano) | Habilita keep alive para uma conexão de soquete. Válido somente para protocolos que dão suporte à noção de keep alive (protocolos orientados para conexão). Para TCP, o tempo limite de keep alive padrão é de 2 horas e o intervalo keep alive é de 1 segundo. O número padrão de investigações keep alive varia de acordo com a versão do Windows. Consulte a referência de SO_KEEPALIVE para obter mais informações. |
SO_LINGER | sim | sim | struct linger | Indica o estado da estrutura persistente associada a um soquete. Se o membro l_onoff da estrutura persistente for diferente de zero, um soquete permanecerá aberto por um período especificado após uma chamada de função closesocket para permitir que os dados enfileirados sejam enviados. A quantidade de tempo, em segundos, para permanecer aberta é especificada no l_linger membro da estrutura persistente . Essa opção só é válida para protocolos confiáveis e orientados à conexão. |
SO_MAX_MSG_SIZE | sim | DWORD | Retorna o tamanho máximo da mensagem de saída para soquetes orientados a mensagens compatíveis com o protocolo. Não tem significado para soquetes orientados a fluxo. | |
SO_MAXDG | sim | DWORD | Retorna o tamanho máximo, em bytes, para datagramas de saída compatíveis com o protocolo. Essa opção de soquete não tem significado para soquetes orientados a fluxo. | |
SO_MAXPATHDG | sim | DWORD | Retorna o tamanho máximo, em bytes, para datagramas de saída compatíveis com o protocolo para um determinado endereço de destino. Essa opção de soquete não tem significado para soquetes orientados a fluxo. Os provedores da Microsoft podem tratar isso silenciosamente como SO_MAXDG. | |
SO_OOBINLINE | sim | sim | DWORD (booliano) | Indica que os dados fora do limite devem ser retornados em linha com os dados regulares. Essa opção só é válida para protocolos orientados a conexão que dão suporte a dados fora de banda. |
SO_OPENTYPE | sim | sim | DWORD | Uma vez definido, afeta se os soquetes subsequentes criados não serão sobrepostos. Os valores possíveis para essa opção são SO_SYNCHRONOUS_ALERT e SO_SYNCHRONOUS_NONALERT. Essa opção não deve ser usada. Em vez disso, use a função WSASocket e deixe o bit WSA_FLAG_OVERLAPPED no parâmetro dwFlags desativado. |
SO_PAUSE_ACCEPT | sim | sim | DWORD(boolean) | Use essa opção para ouvir soquetes. Quando a opção é definida, o soquete responde a todas as conexões de entrada com um RST em vez de aceitá-las. |
SO_PORT_SCALABILITY | sim | sim | DWORD (booliano) | Permite a escalabilidade da porta local para um soquete, permitindo que a alocação de porta seja maximizada alocando portas curinga várias vezes para diferentes pares de porta de endereço local em um computador local. Em plataformas em que ambas as opções estão disponíveis, prefira SO_REUSE_UNICASTPORT em vez dessa opção. Consulte a referência de SO_PORT_SCALABILITY para obter mais informações. |
SO_PROTOCOL_INFO | sim | WSAPROTOCOL_INFO | Essa opção será definida para a opção de soquete SO_PROTOCOL_INFOW se a macro UNICODE estiver definida. Se a macro UNICODE não estiver definida, essa opção será definida para a opção SO_PROTOCOL_INFOA soquete. | |
SO_PROTOCOL_INFOA | sim | WSAPROTOCOL_INFOA | Retorna a estrutura WSAPROTOCOL_INFOA para o soquete especificado | |
SO_PROTOCOL_INFOW | sim | WSAPROTOCOL_INFOW | Retorna a estrutura de WSAPROTOCOL_INFOW para o soquete determinado | |
SO_RANDOMIZE_PORT | sim | sim | DWORD(boolean) | Essa opção deve ser definida em um soquete não associado. Quando SO_RANDOMIZE_PORT é definido e uma porta efêmera é selecionada no soquete, um número de porta aleatório é associado. As portas de reutilização automática (portas selecionadas usando SO_REUSE_UNICASTPORT) também randomizam a porta retornada, portanto, se um aplicativo definir SO_REUSE_UNICASTPORT e tentar definir SO_RANDOMIZE_PORT, a segunda chamada setsockopt falhará. |
SO_RCVBUF | sim | sim | DWORD | O espaço total do buffer por soquete reservado para recebimentos. Isso não está relacionado a SO_MAX_MSG_SIZE e não corresponde necessariamente ao tamanho da janela de recebimento TCP. |
SO_RCVLOWAT | sim | sim | DWORD | Uma opção de soquete do BSD UNIX incluída para compatibilidade com versões anteriores. Essa opção define o número mínimo de bytes a serem processados para operações de entrada de soquete. Essa opção não é compatível com o provedor TCP/IP do Windows. Se essa opção for usada no Windows Vista e posterior, as funções getsockopt e setsockopt falharão com WSAEINVAL. Em versões anteriores do Windows, essas funções falham com WSAENOPROTOOPT. |
SO_RCVTIMEO | sim | sim | DWORD | O tempo limite, em milissegundos, para bloquear chamadas de recebimento. O padrão para essa opção é zero, o que indica que uma operação de recebimento não atingiu o tempo limite. Se uma chamada de recebimento de bloqueio atingir o tempo limite, a conexão estará em um estado indeterminado e deverá ser fechada. Se o soquete for criado usando a função WSASocket , o parâmetro dwFlags deverá ter o atributo WSA_FLAG_OVERLAPPED definido para que o tempo limite funcione corretamente. Caso contrário, o tempo limite nunca entrará em vigor. |
SO_REUSEADDR | sim | sim | DWORD (booliano) | Permite que um soquete se associe a um endereço e porta já em uso. A opção SO_EXCLUSIVEADDRUSE pode impedir isso. |
SO_REUSE_UNICASTPORT | sim | sim | DWORD (booliano) | Quando definido, permita a reutilização de porta efêmera para funções de conexão da API do Winsock que exigem uma associação explícita, como ConnectEx. Observe que as funções de conexão com uma associação implícita (como conectar sem uma associação explícita) têm essa opção definida por padrão. Use essa opção em vez de SO_PORT_SCALABILITY em plataformas em que ambos estão disponíveis. |
SO_REUSE_MULTICASTPORT | sim | DWORD | Quando definido em um soquete, essa opção indica que o soquete nunca será usado para receber pacotes unicast e, consequentemente, que sua porta pode ser compartilhada com outros aplicativos somente multicast. Definir o valor como 1 permite sempre compartilhar o tráfego multicast na porta. Definir o valor como 0 (padrão) desabilita esse comportamento. | |
SO_SNDBUF | sim | sim | DWORD | O espaço total de buffer por soquete reservado para envios. Isso não está relacionado a SO_MAX_MSG_SIZE e não corresponde necessariamente ao tamanho de uma janela de envio TCP. |
SO_SNDLOWAT | sim | sim | DWORD | Uma opção de soquete do BSD UNIX incluída para compatibilidade com versões anteriores. Essa opção define o número mínimo de bytes a serem processados para operações de saída de soquete. Essa opção não é compatível com o provedor TCP/IP do Windows. Se essa opção for usada no Windows Vista e posterior, as funções getsockopt e setsockopt falharão com WSAEINVAL. Em versões anteriores do Windows, essas funções falham com WSAENOPROTOOPT. |
SO_SNDTIMEO | sim | sim | DWORD | O tempo limite, em milissegundos, para bloquear chamadas de envio. O padrão para essa opção é zero, o que indica que uma operação de envio não terá tempo limite. Se uma chamada de envio de bloqueio atingir o tempo limite, a conexão estará em um estado indeterminado e deverá ser fechada. Se o soquete for criado usando a função WSASocket , o parâmetro dwFlags deverá ter o atributo WSA_FLAG_OVERLAPPED definido para que o tempo limite funcione corretamente. Caso contrário, o tempo limite nunca entrará em vigor. |
SO_TYPE | sim | DWORD | Retorna o tipo de soquete para o soquete fornecido (SOCK_STREAM ou SOCK_DGRAM, por exemplo). | |
SO_UPDATE_ACCEPT_CONTEXT | sim | DWORD (booliano) | Essa opção é usada com a função AcceptEx . Essa opção atualiza as propriedades do soquete que são herdadas do soquete de escuta. Essa opção deve ser definida se as funções getpeername, getsockname, getsockopt ou setsockopt devem ser usadas no soquete aceito. | |
SO_UPDATE_CONNECT_CONTEXT | sim | DWORD (booliano) | Essa opção é usada com as funções ConnectEx, WSAConnectByList e WSAConnectByName . Essa opção atualiza as propriedades do soquete depois que a conexão é estabelecida. Essa opção deverá ser definida se as funções getpeername, getsockname, getsockopt, setsockopt ou shutdown forem usadas no soquete conectado. | |
SO_USELOOPBACK | sim | sim | DWORD (booliano) | Use o endereço de loopback local ao enviar dados desse soquete. Essa opção só deve ser usada quando todos os dados enviados também forem recebidos localmente. Essa opção não é compatível com o provedor TCP/IP do Windows. Se essa opção for usada no Windows Vista e posterior, as funções getsockopt e setsockopt falharão com WSAEINVAL. Em versões anteriores do Windows, essas funções falham com WSAENOPROTOOPT. |
Suporte do Windows para opções de SOL_SOCKET
Opção | Windows 10 | Windows 7 | Windows Server 2008 | Windows Vista | Windows Server 2003 | Windows XP | Windows 2000 | Windows NT4 | Windows 9x/ME |
---|---|---|---|---|---|---|---|---|---|
PVD_CONFIG | |||||||||
SO_ACCEPTCONN | x | x | x | x | x | x | x | x | x |
SO_BROADCAST | x | x | x | x | x | x | x | x | x |
SO_BSP_STATE | x | x | x | x | |||||
SO_CONDITIONAL_ACCEPT | x | x | x | x | x | x | x | ||
SO_CONNDATA | x | x | x | x | x | x | x | x | |
SO_CONNDATALEN | x | x | x | x | x | x | x | x | |
SO_CONNECT_TIME | x | x | x | x | x | x | x | x | x |
SO_CONNOPT | x | x | x | x | x | x | x | x | |
SO_CONNOPTLEN | x | x | x | x | x | x | x | x | |
SO_DISCDATA | x | x | x | x | x | x | x | x | |
SO_DISCDATALEN | x | x | x | x | x | x | x | x | |
SO_DISCOPT | x | x | x | x | x | x | x | x | |
SO_DISCOPTLEN | x | x | x | x | x | x | x | x | |
SO_DEBUG | x | x | x | x | x | x | x | x | x |
SO_DONTLINGER | x | x | x | x | x | x | x | x | x |
SO_DONTROUTE | x | x | x | x | x | x | x | x | x |
SO_ERROR | x | x | x | x | x | x | x | x | x |
SO_EXCLUSIVEADDRUSE | x | x | x | x | x | x | x | x SP4+ | |
SO_GROUP_ID | x | x | x | x | |||||
SO_GROUP_PRIORITY | x | x | x | x | |||||
SO_KEEPALIVE | x | x | x | x | x | x | x | x | x |
SO_LINGER | x | x | x | x | x | x | x | x | x |
SO_MAX_MSG_SIZE | x | x | x | x | x | x | x | x | x |
SO_MAXDG | x | x | x | x | x | x | x | ||
SO_MAXPATHDG | x | x | x | x | x | x | x | ||
SO_OOBINLINE | x | x | x | x | x | x | x | x | x |
SO_OPENTYPE | x | x | x | x | x | x | x | x | x |
SO_PORT_SCALABILITY | x | x | x | ||||||
SO_PROTECT | x | ||||||||
SO_PROTOCOL_INFO | x | x | x | x | x | x | x | x | x |
SO_PROTOCOL_INFOA | x | x | x | x | x | x | x | x | x |
SO_PROTOCOL_INFOW | x | x | x | x | x | x | x | x | x |
SO_RCVBUF | x | x | x | x | x | x | x | x | x |
SO_RCVLOWAT | |||||||||
SO_RCVTIMEO | x | x | x | x | x | x | x | x | x |
SO_RANDOMIZE_PORT | x | x | x | x | |||||
SO_REUSEADDR | x | x | x | x | x | x | x | x | x |
SO_REUSE_UNICASTPORT | x | ||||||||
SO_REUSE_MULTICASTPORT | x | ||||||||
SO_SNDBUF | x | x | x | x | x | x | x | x | x |
SO_SNDLOWAT | |||||||||
SO_SNDTIMEO | x | x | x | x | x | x | x | x | x |
SO_TYPE | x | x | x | x | x | x | x | x | x |
SO_UPDATE_ACCEPT_CONTEXT | x | x | x | x | x | x | x | x | |
SO_UPDATE_CONNECT_CONTEXT | x | x | x | x | x | x | |||
SO_USELOOPBACK |
Comentários
As opções de soquete SOL_SOCKET são definidas em vários arquivos de cabeçalho Winsock:
- Winsock2.h
- Mswsock.h
- Ws2def.h
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 SOL_SOCKET nível é definido no arquivo de cabeçalho Ws2def.h , que é incluído automaticamente no arquivo de cabeçalho Winsock2.h . Algumas das opções de soquete SOL_SOCKET são definidas nos arquivos de cabeçalho Winsock2.h e Mswsock.h . As opções de soquete de SOL_SOCKET restantes são definidas no arquivo de cabeçalho Ws2def.h , que é incluído automaticamente pelo arquivo de cabeçalho Winsock2.h . O Ws2def.h nunca deve ser usado diretamente.
No SDK (Platform Software Development Kit) lançado para Windows Server 2003 e Windows XP, o nível de SOL_SOCKET é definido no arquivo de cabeçalho Winsock2.h . As opções de soquete SOL_SOCKET são definidas nos arquivos de cabeçalho Winsock2.h e Mswsock.h .
Requisitos
Requisito | Valor |
---|---|
parâmetro |
|