SOL_SOCKET Opções de Soquete

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

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

Note

Todas as opções de soquete SOL_SOCKET aplicam-se igualmente ao IPv4 e IPv6 (exceto SO_BROADCAST, já que o broadcast não é implementado no IPv6).

 

SOL_SOCKET Opções de Soquete

Option Obtenção Definir Tipo de optval Description
PVD_CONFIG yes yes Char [] Um objeto opaco de estrutura de dados contendo informação de configuração para o fornecedor de serviços. Esta opção depende da implementação.
SO_ACCEPTCONN yes DWORD (booleano) Devolve se um soquete está em modo de escuta. Esta opção é válida apenas para protocolos orientados à ligação.
SO_BROADCAST yes yes DWORD (booleano) Configura um socket para enviar dados de broadcast. Esta opção é válida apenas para protocolos que suportam radiodifusão (IPX e UDP, por exemplo).
SO_BSP_STATE yes CSADDR_INFO Devolve o endereço local, porta local, endereço remoto, porta remota, tipo de socket e protocolo usado por um socket. Consulte a referência SO_BSP_STATE para mais informações.
SO_CONDITIONAL_ACCEPT yes yes DWORD (booleano) Indica se as ligações recebidas devem ser aceites ou rejeitadas pela aplicação, e não pela pilha de protocolos. Consulte a referência SO_CONDITIONAL_ACCEPT para mais informações.
SO_CONNDATA yes yes Char [] Dados adicionais, não pertencentes ao fluxo normal de dados da rede, que são enviados com pedidos de rede para estabelecer uma ligação. Esta opção é utilizada por protocolos antigos como DECNet, OSI TP4 e outros. Esta opção não é suportada pelo protocolo TCP/IP no Windows.
SO_CONNDATALEN yes DWORD O comprimento, em bytes, de dados adicionais, não no fluxo normal de dados da rede, que é enviado com pedidos de rede para estabelecer uma ligação. Esta opção é utilizada por protocolos antigos como DECNet, OSI TP4 e outros. Esta opção não é suportada pelo protocolo TCP/IP no Windows.
SO_CONNECT_TIME yes DWORD Devolve o número de segundos em que uma tomada esteve ligada. Esta opção é válida apenas para protocolos orientados à ligação.
SO_CONNOPT yes yes Char [] Dados adicionais de opção de ligação, que não estão no fluxo normal de dados de rede, que são enviados com pedidos de rede para estabelecer uma ligação. Esta opção é utilizada por protocolos antigos como DECNet, OSI TP4 e outros. Esta opção não é suportada pelo protocolo TCP/IP no Windows.
SO_CONNOPTLEN yes DWORD O comprimento, em bytes, dos dados de opção de ligação, não no fluxo normal de dados da rede, que é enviado com pedidos de rede para estabelecer uma ligação. Esta opção é utilizada por protocolos antigos como DECNet, OSI TP4 e outros. Esta opção não é suportada pelo protocolo TCP/IP no Windows.
SO_DISCDATA yes yes Char [] Dados adicionais, que não estão no fluxo normal de dados da rede, que são enviados com pedidos de rede para desligar uma ligação. Esta opção é utilizada por protocolos antigos como DECNet, OSI TP4 e outros. Esta opção não é suportada pelo protocolo TCP/IP no Windows.
SO_DISCDATALEN yes DWORD O comprimento, em bytes, de dados adicionais, não no fluxo normal de dados da rede, que é enviado com pedidos de rede para desligar uma ligação. Esta opção é utilizada por protocolos antigos como DECNet, OSI TP4 e outros. Esta opção não é suportada pelo protocolo TCP/IP no Windows.
SO_DISCOPT yes yes Char [] Dados adicionais de opção de desligamento, que não estão no fluxo normal de dados da rede, que são enviados com pedidos de rede para desligar uma ligação. Esta opção é utilizada por protocolos antigos como DECNet, OSI TP4 e outros. Esta opção não é suportada pelo protocolo TCP/IP no Windows.
SO_DISCOPTLEN yes DWORD O comprimento, em bytes, dos dados adicionais da opção de desconexão, não no fluxo normal de dados da rede, que é enviado com pedidos de rede para desligar uma ligação. Esta opção é utilizada por protocolos antigos como DECNet, OSI TP4 e outros. Esta opção não é suportada pelo protocolo TCP/IP no Windows.
SO_DEBUG yes yes DWORD (booleano) Ativar a saída de depuração. Atualmente, os fornecedores da Microsoft não fornecem qualquer informação de depuração.
SO_DONTLINGER yes yes DWORD (booleano) Indica o estado do elemento l_onoff da estrutura de demora associada a uma cavidade. Se este membro for diferente de zero, um socket permanece aberto durante um período especificado após uma chamada de função de fechamento para permitir o envio de dados em fila. Esta opção só é válida para protocolos fiáveis orientados à ligação.
SO_DONTROUTE yes yes DWORD (booleano) Indica que os dados de saída devem ser enviados pela interface à qual o soquete está ligado e não encaminhados por outra interface. Esta opção é válida apenas para protocolos orientados a mensagens. Os fornecedores da Microsoft ignoram silenciosamente esta opção e consultam sempre a tabela de encaminhamento para encontrar a interface de saída apropriada.
SO_ERROR yes DWORD Devolve o último código de erro neste soquete. Este código de erro por soquete nem sempre é definido imediatamente.
SO_EXCLUSIVEADDRUSE yes yes DWORD (booleano) Impede que qualquer outro socket se associe ao mesmo endereço e porta. Esta opção deve ser definida antes de chamar a função de ligar . Consulte a SO_EXCLUSIVEADDRUSE referência para mais informações.
SO_GROUP_ID yes int não assinado Esta opção de soquete está reservada e não deve ser utilizada.
SO_GROUP_PRIORITY yes yes int Esta opção de soquete está reservada e não deve ser utilizada.
SO_KEEPALIVE yes yes DWORD (booleano) Permite manter o vivo para uma ligação de soquete. Válido apenas para protocolos que suportam a noção de keep-alive (protocolos orientados a ligação). Para TCP, o timeout padrão do keep-alive é de 2 horas e o intervalo de keep-alive é de 1 segundo. O número padrão de sondas keep-alive varia consoante a versão do Windows. Consulte a referência SO_KEEPALIVE para mais informações.
SO_LINGER yes yes struct longer Indica o estado da estrutura residual associada a um encaixe. Se o elemento l_onoff da estrutura de demora for diferente de zero, um socket permanece aberto durante um período especificado após uma chamada de função de fecho para permitir o envio de dados em fila. O tempo, em segundos, para permanecer aberto é especificado no l_linger elemento da estrutura de demora . Esta opção só é válida para protocolos fiáveis orientados à ligação.
SO_MAX_MSG_SIZE yes DWORD Devolve o tamanho máximo da mensagem de saída para sockets orientados a mensagens suportados pelo protocolo. Não tem significado para sockets orientados a fluxos.
SO_MAXDG yes DWORD Devolve o tamanho máximo, em bytes, para datagramas de saída suportados pelo protocolo. Esta opção de soquete não tem significado para soquetes orientados a fluxos.
SO_MAXPATHDG yes DWORD Devolve o tamanho máximo, em bytes, para datagramas de saída suportados pelo protocolo para um dado endereço de destino. Esta opção de soquete não tem significado para soquetes orientados a fluxos. Microsoft prestadores podem tratar isto silenciosamente como SO_MAXDG.
SO_OOBINLINE yes yes DWORD (booleano) Indica que os dados fora do limite devem ser devolvidos em linha com os dados normais. Esta opção é válida apenas para protocolos orientados a ligação que suportam dados fora de banda.
SO_OPENTYPE yes yes DWORD Uma vez definido, afeta se os sockets subsequentes criados não estarão sobrepostos. Os valores possíveis para esta opção são SO_SYNCHRONOUS_ALERT e SO_SYNCHRONOUS_NONALERT. Esta opção não deve ser utilizada. Em vez disso, use a função WSASocket e deixe o bit de WSA_FLAG_OVERLAPPED no parâmetro dwFlags desligado.
SO_PAUSE_ACCEPT yes yes DWORD (booleano) Use esta opção para as tomadas de escuta. Quando a opção é definida, o socket responde a todas as ligações recebidas com uma RST em vez de as aceitar.
SO_PORT_SCALABILITY yes yes DWORD (booleano) Permite a escalabilidade de portas locais para um socket ao maximizar a alocação de portas ao alocar portas wildcard várias vezes para diferentes pares de portas de endereços locais numa máquina local. Em plataformas onde ambas as opções estão disponíveis, prefere-se SO_REUSE_UNICASTPORT em vez desta opção. Consulte a referência SO_PORT_SCALABILITY para mais informações.
SO_PROTOCOL_INFO yes WSAPROTOCOL_INFO Esta opção é definida para a opção de soquete SO_PROTOCOL_INFOW se o macro UNICODE estiver definido. Se a macro UNICODE não estiver definida, então esta opção é definida para a opção de SO_PROTOCOL_INFOA socket.
SO_PROTOCOL_INFOA yes WSAPROTOCOL_INFOA Devolve a estrutura WSAPROTOCOL_INFOA para o soquete dado
SO_PROTOCOL_INFOW yes WSAPROTOCOL_INFOW Devolve a estrutura WSAPROTOCOL_INFOW para o soquete dado
SO_RANDOMIZE_PORT yes yes DWORD (booleano) Esta opção deve ser definida num soquete não encadernado. Quando SO_RANDOMIZE_PORT é definido e uma porta efémera é selecionada no soquete, um número de porta aleatório é limitado. Portas de reutilização automática (portas selecionadas usando SO_REUSE_UNICASTPORT) também randomizam a porta devolvida, por isso, se uma aplicação definir SO_REUSE_UNICASTPORT e depois tentar definir SO_RANDOMIZE_PORT, a segunda chamada setsockopt falha.
SO_RCVBUF yes yes DWORD O espaço total de buffer por soquete reservado para receções. Isto não está relacionado com SO_MAX_MSG_SIZE e não corresponde necessariamente ao tamanho da janela de receção TCP.
SO_RCVLOWAT yes yes DWORD Uma opção de socket do BSD UNIX incluída para compatibilidade retroativa. Esta opção define o número mínimo de bytes a processar para operações de entrada no soquete. Esta opção não é suportada pelo fornecedor Windows TCP/IP. Se esta opção for usada no Windows Vista e versões posteriores, as funções getsockopt e setsockopt falham com o WSAEINVAL. Nas versões anteriores do Windows, estas funções falham com o WSAENOPROTOOPT.
SO_RCVTIMEO yes yes DWORD O timeout, em milissegundos, para bloquear chamadas de receção. O valor padrão desta opção é zero, o que indica que uma operação de receção não irá expirar. Se uma chamada de receção bloqueante expirar, a ligação está num estado indeterminado e deve ser encerrada.
Se o socket for criado usando a função WSASocket , então o parâmetro dwFlags deve ter o atributo WSA_FLAG_OVERLAPPED definido para que o timeout funcione corretamente. Caso contrário, o tempo de espera nunca entra em vigor.
SO_REUSEADDR yes yes DWORD (booleano) Permite que um socket se ligue a um endereço e porta já em uso. A opção SO_EXCLUSIVEADDRUSE pode evitar isto.
SO_REUSE_UNICASTPORT yes yes DWORD (booleano) Quando definido, permita a reutilização efémera de portas para funções de ligação Winsock API que requerem um bind explícito, como o ConnectEx. Note-se que as funções de ligação com uma ligação implícita (como conectar sem uma ligação explícita) têm esta opção definida por defeito. Use esta opção em vez de SO_PORT_SCALABILITY em plataformas onde ambas estejam disponíveis.
SO_REUSE_MULTICASTPORT yes DWORD Quando configurado num socket, esta opção indica que o socket nunca será usado para receber pacotes unicast e, consequentemente, que a sua porta pode ser partilhada com outras aplicações apenas multicast. Definir o valor para 1 permite partilhar sempre o tráfego multicast na porta. Definir o valor para 0 (por defeito) desativa este comportamento.
SO_SNDBUF yes yes DWORD O espaço total de buffer por socket reservado para envios. Isto não está relacionado com SO_MAX_MSG_SIZE e não corresponde necessariamente ao tamanho de uma janela de envio TCP.
SO_SNDLOWAT yes yes DWORD Uma opção de socket do BSD UNIX incluída para compatibilidade retroativa. Esta opção define o número mínimo de bytes a processar para operações de saída em sockets. Esta opção não é suportada pelo fornecedor Windows TCP/IP. Se esta opção for usada no Windows Vista e versões posteriores, as funções getsockopt e setsockopt falham com o WSAEINVAL. Nas versões anteriores do Windows, estas funções falham com o WSAENOPROTOOPT.
SO_SNDTIMEO yes yes DWORD O timeout, em milissegundos, para bloquear chamadas de envio. O valor padrão desta opção é zero, o que indica que uma operação de envio não irá expirar. Se uma chamada de envio bloqueada expirar, a ligação está num estado indeterminado e deve ser encerrada.
Se o socket for criado usando a função WSASocket , então o parâmetro dwFlags deve ter o atributo WSA_FLAG_OVERLAPPED definido para que o timeout funcione corretamente. Caso contrário, o tempo de espera nunca entra em vigor.
SO_TYPE yes DWORD Devolve o tipo de soquete para o soquete dado (SOCK_STREAM ou SOCK_DGRAM, por exemplo).
SO_UPDATE_ACCEPT_CONTEXT yes DWORD (booleano) Esta opção é usada com a função AcceptEx . Esta opção atualiza as propriedades da tomada herdadas da tomada de escuta. Esta opção deve ser definida se as funções getpeername, getsockname, getsockopt ou setsockopt forem usadas no socket aceite.
SO_UPDATE_CONNECT_CONTEXT yes DWORD (booleano) Esta opção é usada com as funções ConnectEx, WSAConnectByList e WSAConnectByName . Esta opção atualiza as propriedades do soquete após a ligação estar estabelecida. Esta opção deve ser definida se as funções getpeername, getsockname, getsockopt, setsockopt ou shutdown forem usadas na tomada ligada.
SO_USELOOPBACK yes yes DWORD (booleano) Use o endereço local de loopback ao enviar dados a partir deste socket. Esta opção só deve ser usada quando todos os dados enviados também forem recebidos localmente. Esta opção não é suportada pelo fornecedor Windows TCP/IP. Se esta opção for usada no Windows Vista e versões posteriores, as funções getsockopt e setsockopt falham com o WSAEINVAL. Nas versões anteriores do Windows, estas funções falham com o WSAENOPROTOOPT.

Windows Suporte às Opções SOL_SOCKET

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

Remarks

As opções de SOL_SOCKET sockets estão definidas em vários ficheiros de cabeçalho Winsock:

  • Winsock2.h
  • Mswsock.h
  • Ws2def.h

No Microsoft Windows Software Development Kit (SDK) lançado para Windows Vista e posteriores, a organização dos ficheiros de cabeçalho mudou e SOL_SOCKET nível é definido no ficheiro de cabeçalho Ws2def.h, que é automaticamente incluído no ficheiro de cabeçalho Winsock2.h. Algumas das opções de socket SOL_SOCKET estão definidas nos ficheiros de cabeçalho Winsock2.h e Mswsock.h . As restantes opções de SOL_SOCKET socket estão definidas no ficheiro de cabeçalho Ws2def.h , que é automaticamente incluído pelo ficheiro de cabeçalho Winsock2.h . O Ws2def.h nunca deve ser usado diretamente.

No Platform Software Development Kit (SDK) lançado em Windows Server de 2003 e Windows XP, o nível SOL_SOCKET está definido no ficheiro de cabeçalho Winsock2.h. As opções de SOL_SOCKET sockets estão definidas nos ficheiros de cabeçalho Winsock2.h e Mswsock.h .

Requirements

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