Compartilhar via


Função de retorno de chamada LPWSPGETSOCKOPT (ws2spi.h)

A função LPWSPGetSockOpt recupera uma opção de soquete.

Sintaxe

LPWSPGETSOCKOPT Lpwspgetsockopt;

int Lpwspgetsockopt(
  SOCKET s,
  int level,
  int optname,
  char *optval,
  LPINT optlen,
  LPINT lpErrno
)
{...}

Parâmetros

s

Um descritor que identifica um soquete.

level

O nível no qual a opção é definida; os níveis com suporte incluem SOL_SOCKET. (Consulte anexo para obter mais níveis específicos do protocolo.)

optname

A opção de soquete para a qual o valor deve ser recuperado.

optval

Um ponteiro para o buffer no qual o valor da opção solicitada deve ser retornado.

optlen

Um ponteiro para o tamanho, em bytes, do buffer optval .

lpErrno

Um ponteiro para o código de erro.

Retornar valor

Se nenhum erro ocorrer, LPWSPGetSockOpt retornará zero. Caso contrário, um valor de SOCKET_ERROR será retornado e um código de erro específico estará disponível no lpErrno.

Código do Erro Significado
WSAENETDOWN
O subsistema de rede falhou.
WSAEFAULT
Um dos parâmetros optval ou optlen não é uma parte válida do espaço de endereço do usuário ou o parâmetro optlen é muito pequeno.
WSAEINVAL
O nível é desconhecido ou inválido.
WSAEINPROGRESS
A função é invocada quando um retorno de chamada está em andamento.
WSAENOPROTOOPT
A opção é desconhecida ou sem suporte da família de protocolos indicada.
WSAENOTSOCK
O descritor não é um soquete.

Comentários

A função LPWSPGetSockOpt recupera o valor atual de uma opção de soquete associada a um soquete de qualquer tipo, em qualquer estado, e armazena o resultado em optval. As opções podem existir em vários níveis de protocolo, mas estão sempre presentes no nível do soquete superior. As opções afetam as operações de soquete, como o roteamento de pacotes e a transferência de dados OOB.

O valor associado à opção selecionada é retornado no valor ideal do buffer. O inteiro apontado por optlen deve conter originalmente o tamanho desse buffer; no retorno, ele será definido como o tamanho do valor retornado. Para SO_LINGER, esse será o tamanho de uma estrutura persistente; para a maioria das outras opções, ele será do tamanho de um inteiro.

O cliente SPI do Windows Sockets é responsável por alocar qualquer espaço de memória apontado direta ou indiretamente por qualquer um dos parâmetros especificados por ele.

Se a opção nunca tiver sido definida com LPWSPSetSockOpt, LPWSPGetSockOpt retornará o valor padrão para a opção.

Para obter mais informações sobre opções de soquete, consulte Opções de soquete.

level = SOL_SOCKET

Valor Type Significado Padrão
SO_ACCEPTCONN BOOL O soquete está escutando por meio de LPWSPListen. FALSE , a menos que um LPWSPListen tenha sido executado.
SO_BROADCAST BOOL O soquete é configurado para a transmissão e o recebimento de mensagens de transmissão. FALSE
SO_DEBUG BOOL A depuração está habilitada FALSE
SO_DONTLINGER BOOL Se for true, a opção SO_LINGER será desabilitada. TRUE
SO_DONTROUTE BOOL O roteamento está desabilitado. A definição dessa opção de soquete é bem-sucedida, mas é ignorada em soquetes AF_INET; falha em soquetes AF_INET6 com WSAENOPROTOOPT . Não há suporte para essa opção em soquetes atm (resulta em um erro). FALSE
SO_ERROR inteiro Recupera o erro status e limpa. 0
SO_GROUP_ID GROUP Reservado. Null
SO_GROUP_PRIORITY inteiro Reservado. 0
SO_KEEPALIVE BOOL Keepalives estão sendo enviados. Sem suporte em soquetes atm (resulta em um erro). FALSE
SO_LINGER Estrutura LINGER Retorna as opções persistentes atuais. 1 está ativado (padrão), 0 está desativado
SO_MAX_MSG_SIZE inteiro sem sinal O tamanho máximo de uma mensagem para tipos de soquete orientados a mensagens (por exemplo, SOCK_DGRAM). Não tem significado para soquetes orientados a fluxo. Dependente da implementação
SO_OOBINLINE BOOL Os dados OOB estão sendo recebidos no fluxo de dados normal. FALSE
SO_PROTOCOL_INFO estrutura WSAPROTOCOL_INFO Uma descrição das informações de protocolo para o protocolo associado a esse soquete. Dependente de protocolo
SO_RCVBUF inteiro 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. Dependente da implementação
SO_REUSEADDR BOOL O soquete pode ser associado a um endereço que já está em uso. Essa opção não é aplicável em soquetes de caixa eletrônico. FALSE.
SO_SNDBUF inteiro 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. Dependente da implementação
SO_TYPE inteiro O tipo de soquete (por exemplo, SOCK_STREAM). Conforme criado com LPWSPSocket">LPWSPSocket
PVD_CONFIG Dependente do Provedor de Serviços Um objeto de estrutura de dados opaco do provedor de serviços associado a soquetes s. Esse objeto armazena as informações de configuração atuais do provedor de serviços. O formato exato dessa estrutura de dados é específico do provedor de serviços. Dependente da implementação

 

Chamar LPWSPGetSockOpt com uma opção sem suporte resultará em um código de erro de WSAENOPROTOOPT sendo retornado em lpErrno.

SO_DEBUG

Os provedores de serviços do Windows Sockets são incentivados (mas não são necessários) a fornecer informações de depuração de saída se a opção SO_DEBUG for definida por um cliente SPI do Windows Sockets. O mecanismo para gerar as informações de depuração e o formulário que ele toma estão além do escopo dessa especificação.

SO_ERROR

A opção SO_ERROR retorna e redefine o código de erro baseado em soquete (que não é necessariamente o mesmo que o código de erro por thread mantido pelo WS2_32.DLL). Uma chamada bem-sucedida do Windows Sockets no soquete não redefine o código de erro baseado em soquete retornado pela opção SO_ERROR.

SO_GROUP_ID

Reservado. Esse valor deve ser NULL.

SO_GROUP_PRIORITY

Reservado.

SO_KEEPALIVE

Um cliente SPI do Windows Sockets pode solicitar que um provedor de serviços TCP/IP habilite o uso de pacotes keep alive em conexões TCP ativando a opção de soquete SO_KEEPALIVE . Um provedor do Windows Sockets não precisa dar suporte ao uso de keep alives: se isso acontecer, a semântica precisa é específica da implementação, mas deve estar em conformidade com a seção 4.2.3.6 do RFC 1122: Requisitos para Hosts da Internet — Camadas de Comunicação. (Esse recurso só pode estar disponível em inglês.) Se uma conexão for descartada como resultado de keep alives, o código de erro WSAENETRESET será retornado para todas as chamadas em andamento no soquete e todas as chamadas subsequentes falharão com WSAENOTCONN .

SO_LINGER

SO_LINGER controla a ação executada quando dados não solicitados são enfileirados em um soquete e um LPWSPCloseSocket é executado. Consulte LPWSPCloseSocket para obter uma descrição da maneira como as configurações de SO_LINGER afetam a semântica de LPWSPCloseSocket. O cliente SPI do Windows Sockets obtém o comportamento desejado criando uma estrutura LINGER (apontada pelo parâmetro optval ) com os seguintes elementos:

}

SO_MAX_MSG_SIZE

Essa é uma opção de soquete somente get, que indica o tamanho máximo de uma mensagem de envio de saída para tipos de soquete orientados a mensagens (por exemplo, SOCK_DGRAM) conforme implementado pelo provedor de serviços. Ele não tem significado para soquetes orientados a fluxo de bytes. Não há nenhum provisionamento para determinar o tamanho máximo da mensagem de entrada.

SO_PROTOCOL_INFOW

Essa é uma opção somente get que fornece a estrutura WSAPROTOCOL_INFO associada a esse soquete. Consulte WSCEnumProtocols para obter mais informações sobre essa estrutura.

SO_SNDBUF

Quando um provedor de serviços do Windows Sockets dá suporte às opções SO_RCVBUF e SO_SNDBUF, um cliente SPI do Windows Sockets pode usar LPWSPSetSockOpt para solicitar tamanhos de buffer diferentes (maiores ou menores). A chamada pode ter êxito mesmo que o provedor de serviços não tenha disponibilizado todo o valor solicitado. Um cliente SPI do Windows Sockets deve chamar essa função com a mesma opção para marcar o tamanho do buffer realmente fornecido.

SO_REUSEADDR

Por padrão, um soquete não pode ser associado (consulte LPWSPBind) a um endereço local que já está em uso. Às vezes, no entanto, pode ser desejável reutilizar um endereço dessa maneira. Como cada conexão é identificada exclusivamente pela combinação de endereços locais e remotos, não há problema em ter dois soquetes associados ao mesmo endereço local, desde que os endereços remotos sejam diferentes. Para informar ao provedor do Windows Sockets que um LPWSPBind em um soquete deve ter permissão para associar a um endereço local que já está em uso por outro soquete, o cliente SPI do Windows Sockets deve definir a opção de soquete SO_REUSEADDR para o soquete antes de emitir o LPWSPBind. Observe que a opção é interpretada somente no momento do LPWSPBind. Portanto, é desnecessário (mas inofensivo) definir a opção em um soquete que não deve ser associado a um endereço existente e definir ou redefinir a opção após o LPWSPBind não ter nenhum efeito sobre este ou qualquer outro soquete.

PVD_CONFIG

Essa opção recupera um objeto de estrutura de dados opaco do provedor de serviços associado a soquetes s. Esse objeto armazena as informações de configuração atuais do provedor de serviços. O formato exato dessa estrutura de dados é específico do provedor de serviços.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho ws2spi.h

Confira também

LPWSPSetSockOpt

LPWSPSocket