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
Winsock2.h;
Mswsock.h;
Ws2def.h (inclua Winsock2.h)