Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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 |
|