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