CAsyncSocket::IOCtl
BOOL IOCtl ( longa lCommand, DWORD * lpArgument aponta );
Valor de retorno
Diferente de zero se a função for bem-sucedida; caso contrário 0 e um código de erro específicos podem ser recuperadas chamando GetLastError. Os seguintes erros aplicam para esta função de membro:
-
WSA&NOTINITIALISEDAnbsp; Uma bem-sucedida AfxSocketInit deve ocorrer antes de usar essa API.
-
WSAE&NETDOWNnbsp; A implementação de soquetes do Windows detectou que o subsistema da rede falhou.
-
WSAEI&NVALnbsp;lCommand não é um comando válido, ou lpArgument aponta não é um parâmetro aceitável para lCommand, ou o comando não é aplicável para o tipo de soquete fornecido.
-
WSAEI&NPROGRESSnbsp; Uma bloqueio Windows Sockets operação está em andamento.
-
WSAE&NOTSOCKnbsp; O descritor não é um soquete.
Parâmetros
lCommand
O comando para executar o soquete.
lpArgument aponta
Um ponteiro para um parâmetro para lCommand.
Observações
Chame essa função de membro para controlar o modo de um soquete. Esta rotina pode ser usada em qualquer soquete em qualquer Estado. Ele é usado para obter ou recuperar parâmetros operacionais associado com o soquete, independente do protocolo de subsistema. Os comandos a seguir são suportados:
-
FIO&NBIOnbsp; Ativar ou desativar modo nonblocking no soquete. Os pontos de parâmetro lpArgument aponta um DWORD, que é diferente de zero se não bloqueio modo deve ser habilitado e zero se ele for ser desativado. Se AsyncSelect tiver sido emitido em um soquete, em seguida, qualquer tentar usar IOCtl para definir a Soquete voltar para bloqueio modo falhará com WSAEINVAL. Para definir o soquete Voltar para bloqueio modo e evitar o erro WSAEINVAL , um aplicativo deve primeiro desativar AsyncSelect por chamada AsyncSelect com o parâmetro lEvent igual a 0, em seguida, chamar IOCtl.
-
FIO&NREADnbsp; Determinar o número máximo de bytes que podem ser lidos com uma chamada de recebimento neste soquete. Os pontos de parâmetro lpArgument aponta um DWORD em que IOCtl armazena o resultado. Se esse soquete for do tipo SOCK_STREAM, FIONREAD retorna a quantidade total de dados que podem ser lido em um único recebimento; Isso normalmente é o mesmo como a quantidade total de dados enfileirado na Soquete. Se esse soquete for do tipo SOCK_DGRAM, FIONREAD retorna que o tamanho do primeiro datagrama na fila no soquete.
-
SIOCATMARKnbsp; Determine se todos os fora-de-banda dados tenham sido lidos. Isso se aplica somente a um soquete de tipo SOCK_STREAM que tenha sido configurado para recepção em linha de qualquer dados fora de banda (SO_OOBI&NLINE). Se sem dados fora de banda está aguardando para ser lido, a operação retorna diferente de zero. Caso contrário, retorna 0 e o Avançar receber ou ReceiveFrom executadas no soquete irá recuperar alguns ou todos os dados que precede a "marca"; o aplicativo deve usar a operação de SIOCATMARK para determinar se os dados permanecem. Se houver quaisquer dados normais anterior os dados (out-of-band) "urgentes", ele será recebido em ordem. (Note que um receber ou ReceiveFrom nunca misturar dados fora de banda e normais na mesma chamada.) Os pontos de parâmetro lpArgument aponta um DWORD em que IOCtl armazena o resultado.
Essa função é um subconjunto de IOCTL () como usado nos soquetes Berkeley. Em particular, não há nenhum comando que é equivalente a FIOASYNC, enquanto SIOCATMARK é o comando de nível de soquete apenas qual é suportado.
Visão geral de CAsyncSocket |nbsp; Membros de classe | Gráfico de hierarquia
Co&nsulte tambémnbsp;CAsyncSocket::AsyncSelect, CAsyncSocket::Create, CAsyncSocket::GetSockOpt, CAsyncSocket::SetSockOpt