CAsyncSocket::SetSockOpt

Chame essa função de membro para conjunto uma opção de soquete.

BOOL SetSockOpt(
   int nOptionName,
   const void* lpOptionValue,
   int nOptionLen,
   int nLevel = SOL_SOCKET 
);

Parâmetros

  • nOptionName
    A opção de soquete para o qual o valor é ser conjunto.

  • lpOptionValue
    Um ponteiro para o buffer no qual o valor da opção solicitada é fornecido.

  • nOptionLen
    O dimensionar do lpOptionValue buffer em bytes.

  • nLevel
    O nível em que a opção é definida; os níveis com suporte somente são SOL_SOCKET and IPPROTO_TCP.

Valor de retorno

Diferente de zero se a função for bem-sucedida; caso contrário, 0, e um código de erro específico pode ser recuperado chamando GetLastError.Os seguintes erros se aplicam a essa função de membro:

  • WSANOTINITIALISED   Um bem-sucedida AfxSocketInit deve ocorrer antes de usar essa API.

  • WSAENETDOWN   A implementação do Windows Sockets detectou que o subsistema de rede falhou.

  • WSAEFAULT   lpOptionValue não é uma parte válida do espaço de endereço de processo.

  • WSAEINPROGRESS   Uma operação de bloqueio de Windows Sockets está em andamento.

  • WSAEINVAL   nLevel inválido, ou as informações em lpOptionValue inválido.

  • WSAENETRE conjunto   Conexão atingiu o tempo limite quando SO_KEEPALIVE is conjunto.

  • WSAENOPROTOOPT   A opção é desconhecido ou sem suporte.Em particular, SO_BROADCAST não tem suporte em soquetes do tipo SOCK_STREAM, while SO_DONTLINGER, SO_KEEPALIVE, SO_LINGER, and SO_OOBINLINE não são suportados em soquetes do tipo SOCK_DGRAM.

  • WSAENOTCONN   Conexão foi redefinida quando SO_KEEPALIVE é definida.

  • WSAENOTSOCK   O descritor não é um soquete.

Comentários

SetSockOpt Define o valor corrente para uma opção de soquete associada a um soquete de qualquer tipo, em qualquer estado. Embora as opções podem existir em vários níveis de protocolo, essa especificação define apenas opções que existem no nível de soquete"superior".Opções afetam operações de soquete, por exemplo, se sistema autônomo dados emitidos são recebidos no fluxo de dados normal, se sistema autônomo mensagens transmitidas podem ser enviadas no soquete e assim por diante.

Há dois tipos de opções de soquete: booliano Opções de ativar ou desabilitar um recurso ou o comportamento e opções que exigem um valor inteiro ou estrutura.Para ativar uma opção booliano, lpOptionValue aponta para um número inteiro diferente de zero. Para desabilitar a opção lpOptionValue aponta para um número inteiro igual a zero. nOptionLen deve ser igual a sizeof(BOOL) opções booleanas.Para obter outras opções, lpOptionValue aponta para o inteiro ou uma estrutura que contém o valor desejado para a opção, e nOptionLen é o comprimento de número inteiro ou estrutura.

SO_LINGER controla a ação executada quando dados não enviados está na fila em um soquete e o Fechar função é chamada para fechar o soquete.

Por padrão, um soquete não pode ser limite (consulte BIND) para um endereço local que já está em uso.Ocasionalmente, no entanto, talvez seja desejável para um endereço em dessa maneira "reutilizar".sistema autônomo cada conexão é identificado exclusivamente pela combinação de endereços locais e remoto, não há nenhum problema com a necessidade de dois soquetes vinculados para o mesmo endereço local desde que sistema autônomo endereços remoto são diferentes.

Para informar sobre a implementação do Windows Sockets que um BIND telefonar em um soquete não deve ser desativada porque o endereço desejado já está em uso por outro soquete, o aplicativo deve conjunto o SO_REUSEADDR a opção de soquete para o soquete antes de emitir o BIND telefonar.Observe que a opção é interpretada somente no momento do BIND telefonar: Portanto, é desnecessário (mas inofensiva) conjunto a opção em um soquete que não deve ser limite a um endereço existente, e configuração ou re configuração a opção após o BIND telefonar tem efeito sobre esse assunto ou qualquer Outros soquete.

Um aplicativo pode solicitar que a implementação do Windows Sockets ativar o uso de pacotes "keep-alive" em transmissão Control Protocol (TCP) conexões ativando oSO_KEEPALIVEopção de soquete .Uma implementação do Windows Sockets não precisa de suporte ao uso de keep-alives de: em caso afirmativo, a semântica exata é específicos de implementação mas deve estar de acordo com a seção 4.2.3.6 da RFC 1122: "Requisitos para a Internet Hosts — Communication camadas." Se uma conexão for interrompida sistema autônomo resultado de "keep-alives" o código de erroWSAENETRESET são retornadas para todas sistema autônomo chamadas em andamento no soquete e todas sistema autônomo chamadas subseqüentes falhará com WSAENOTCONN.

The TCP_NODELAY opção desativa o algoritmo Nagle.O algoritmo Nagle é usado para reduzir o número de pacotes pequenos enviada por um host ao armazenamento em buffer não reconhecidas enviar dados até que um pacote em dimensionar normal pode ser enviado.No entanto, para alguns aplicativos esse algoritmo pode impedir desempenho e TCP_NODELAY pode ser usado para desativá-la.Autores de aplicativos não devem conjunto TCP_NODELAY a menos que o impacto desse procedimento é tão bem entendido e desejado, desde configuração TCP_NODELAY pode ter um impacto negativo significativo no desempenho da rede.TCP_NODELAY é o único com suporte a opção de soquete que usa o nível IPPROTO_TCP; todas as outras opções de uso nível SOL_SOCKET.

Algumas implementações da fonte do Windows Sockets de informações de depurar de saída se o SO_DEBUG opção é definida por um aplicativo.

As opções a seguir são suportadas para SetSockOpt. O tipo identifica o tipo de dados abordados por lpOptionValue.

Valor

Type (Tipo)

Significado

SO_BROADCAST

BOOL

Permita difundido de mensagens de difundido no soquete.

SO_DEBUG

BOOL

Registro de informações de depuração.

SO_DONTLINGER

BOOL

Não bloquear Fechar aguardando dados não enviados para serem enviados.Esta opção é equivalente a conjunto SO_LINGER with l_onoff definido como zero.

SO_DONTROUTE

BOOL

Não rotear: enviar diretamente a interface.

SO_KEEPALIVE

BOOL

enviar keep-alives.

SO_LINGER

struct LINGER

Durar em Fechar se houver dados não enviados.

SO_OOBINLINE

BOOL

Recebe dados fora de banda no fluxo de dados normal.

SO_RCVBUF

int

Especificar dimensionar do buffer para recebe.

SO_REUSEADDR

BOOL

Permitir que o soquete para ser limite a um endereço que já está em uso.(See BIND.)

SO_SNDBUF

int

Especifica o dimensionar de buffer para envia.

TCP_NODELAY

BOOL

Desativa o algoritmo Nagle para concentração de enviar.

Opções de Berkeley Software Distribution (BSD) não tem suportadas para SetSockOpt são:

Valor

Type (Tipo)

Significado

SO_ACCEPTCONN

BOOL

Soquete de escuta

SO_ERROR

int

Obter status de erro e desmarcar.

SO_RCVLOWAT

int

Receba marca d ' água baixa.

SO_RCVTIMEO

int

Receba tempo limite

SO_SNDLOWAT

int

enviar marca d ' água baixa.

SO_SNDTIMEO

int

Envie o tempo limite.

SO_TYPE

int

Tipo de soquete.

IP_OPTIONS

 

conjunto opções de campo no cabeçalho IP.

Requisitos

Cabeçalho: afxsock.h

Consulte também

Referência

Classe CAsyncSocket

Gráfico de hierarquia

CAsyncSocket::AsyncSelect

CAsyncSocket::Bind

CAsyncSocket::criar

CAsyncSocket::GetSockOpt

CAsyncSocket::IOCtl

Outros recursos

CAsyncSocket membros