Opções de soquete SOL_SOCKET

As tabelas a seguir descrevem SOL_SOCKET opções de soquete. 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.

Algumas opções de soquete exigem mais explicações do que essas tabelas podem transmitir. Essas opções contêm links para páginas adicionais.

Note

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 Description
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 (booleano) 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 (booleano) 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 SO_BSP_STATE para obter mais informações.
SO_CONDITIONAL_ACCEPT sim sim DWORD (booleano) Indica se as conexões de entrada devem ser aceitas ou rejeitadas pelo aplicativo, não pela pilha de protocolo. Consulte a referência 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 tem suporte do 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 tem suporte do 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 tem suporte do 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 tem suporte do 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 tem suporte do 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 tem suporte do 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 tem suporte do 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. Essa opção não tem suporte do protocolo TCP/IP no Windows.
SO_DEBUG sim sim DWORD (booleano) Habilitar 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 (booleano) Indica o estado do membro l_onoff da estrutura persistente associada a um soquete. Se esse membro não for zero, um soquete permanecerá aberto por um período especificado após uma chamada de função closesocket para habilitar o envio de dados na fila. Essa opção só é válida para protocolos confiáveis orientados à conexão.
SO_DONTROUTE sim sim DWORD (booleano) 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. Microsoft provedores 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 (booleano) Impede que qualquer outro soquete se vincule ao mesmo endereço e porta. Essa opção deve ser definida antes de chamar a função de associação . Consulte a referência SO_EXCLUSIVEADDRUSE para obter mais informações.
SO_GROUP_ID sim inteiro sem sinal 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 (booleano) Habilita o keep-alive para uma conexão de soquete. Válido apenas para protocolos que dão suporte à noção de keep-alive (protocolos orientados à conexão). Para TCP, o tempo limite padrão de keep-alive é de 2 horas e o intervalo de keep-alive é de 1 segundo. O número padrão de investigações keep-alive varia de acordo com a versão de 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 não for 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 membro l_linger da estrutura persistente . Essa opção só é válida para protocolos confiáveis 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. Microsoft provedores podem tratar isso silenciosamente como SO_MAXDG.
SO_OOBINLINE sim sim DWORD (booleano) Indica que dados fora do limite devem ser retornados em linha com dados regulares. Essa opção só é válida para protocolos orientados à 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 (booleano) Use essa opção para ouvir soquetes. Quando a opção está definida, o socket responde a todas as ligações de entrada com um RST em vez de as aceitar.
SO_PORT_SCALABILITY sim sim DWORD (booleano) 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 como a opção de soquete SO_PROTOCOL_INFOW se a macro UNICODE for definida. Se a macro UNICODE não estiver definida, essa opção será definida como a opção de soquete SO_PROTOCOL_INFOA.
SO_PROTOCOL_INFOA sim WSAPROTOCOL_INFOA Retorna a estrutura de WSAPROTOCOL_INFOA para o soquete especificado
SO_PROTOCOL_INFOW sim WSAPROTOCOL_INFOW Retorna a estrutura de WSAPROTOCOL_INFOW para o soquete especificado
SO_RANDOMIZE_PORT sim sim DWORD (booleano) 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 de buffer por soquete reservado para recebimentos. Isso não está relacionado ao SO_MAX_MSG_SIZE e não corresponde necessariamente ao tamanho da janela de recebimento do 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 tem suporte do provedor de Windows TCP/IP. Se essa opção for usada em Windows Vista e posteriores, 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 terá 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 terá efeito.
SO_REUSEADDR sim sim DWORD (booleano) Permite que um soquete se associe a um endereço e uma porta já em uso. A opção SO_EXCLUSIVEADDRUSE pode impedir isso.
SO_REUSE_UNICASTPORT sim sim DWORD (booleano) Quando definido, permita a reutilização da porta efêmera para funções de conexão da API 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 ao 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 tem suporte do provedor de Windows TCP/IP. Se essa opção for usada em Windows Vista e posteriores, 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 terá efeito.
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 (booleano) 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 deverá ser definida se as funções getpeername, getsockname, getsockopt ou setsockopt forem usadas no soquete aceito.
SO_UPDATE_CONNECT_CONTEXT sim DWORD (booleano) 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 (booleano) 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 serão recebidos localmente. Essa opção não tem suporte do provedor de Windows TCP/IP. Se essa opção for usada em Windows Vista e posteriores, as funções getsockopt e setsockopt falharão com WSAEINVAL. Em versões anteriores do Windows, essas funções falham com WSAENOPROTOOPT.

Suporte 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 sim sim sim sim sim sim sim sim sim
SO_BROADCAST sim sim sim sim sim sim sim sim sim
SO_BSP_STATE sim sim sim sim
SO_CONDITIONAL_ACCEPT sim sim sim sim sim sim sim
SO_CONNDATA sim sim sim sim sim sim sim sim
SO_CONNDATALEN sim sim sim sim sim sim sim sim
SO_CONNECT_TIME sim sim sim sim sim sim sim sim sim
SO_CONNOPT sim sim sim sim sim sim sim sim
SO_CONNOPTLEN sim sim sim sim sim sim sim sim
SO_DISCDATA sim sim sim sim sim sim sim sim
SO_DISCDATALEN sim sim sim sim sim sim sim sim
SO_DISCOPT sim sim sim sim sim sim sim sim
SO_DISCOPTLEN sim sim sim sim sim sim sim sim
SO_DEBUG sim sim sim sim sim sim sim sim sim
SO_DONTLINGER sim sim sim sim sim sim sim sim sim
SO_DONTROUTE sim sim sim sim sim sim sim sim sim
SO_ERROR sim sim sim sim sim sim sim sim sim
SO_EXCLUSIVEADDRUSE sim sim sim sim sim sim sim sim SP4+
SO_GROUP_ID sim sim sim sim
SO_GROUP_PRIORITY sim sim sim sim
SO_KEEPALIVE sim sim sim sim sim sim sim sim sim
SO_LINGER sim sim sim sim sim sim sim sim sim
SO_MAX_MSG_SIZE sim sim sim sim sim sim sim sim sim
SO_MAXDG sim sim sim sim sim sim sim
SO_MAXPATHDG sim sim sim sim sim sim sim
SO_OOBINLINE sim sim sim sim sim sim sim sim sim
SO_OPENTYPE sim sim sim sim sim sim sim sim sim
SO_PORT_SCALABILITY sim sim sim
SO_PROTECT sim
SO_PROTOCOL_INFO sim sim sim sim sim sim sim sim sim
SO_PROTOCOL_INFOA sim sim sim sim sim sim sim sim sim
SO_PROTOCOL_INFOW sim sim sim sim sim sim sim sim sim
SO_RCVBUF sim sim sim sim sim sim sim sim sim
SO_RCVLOWAT
SO_RCVTIMEO sim sim sim sim sim sim sim sim sim
SO_RANDOMIZE_PORT sim sim sim sim
SO_REUSEADDR sim sim sim sim sim sim sim sim sim
SO_REUSE_UNICASTPORT sim
SO_REUSE_MULTICASTPORT sim
SO_SNDBUF sim sim sim sim sim sim sim sim sim
SO_SNDLOWAT
SO_SNDTIMEO sim sim sim sim sim sim sim sim sim
SO_TYPE sim sim sim sim sim sim sim sim sim
SO_UPDATE_ACCEPT_CONTEXT sim sim sim sim sim sim sim sim
SO_UPDATE_CONNECT_CONTEXT sim sim sim sim sim sim
SO_USELOOPBACK

Remarks

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 SDK (Software Development Kit) Microsoft Windows lançado para Windows Vista e posteriores, a organização dos 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 .

Requirements

Requisito Valor
Cabeçalho
Winsock2.h;
Mswsock.h;
Ws2def.h (inclua Winsock2.h)