CAsyncSocket::IOCtl
Chamar essa função de membro para controlar o modo de um soquete.
BOOL IOCtl(
long lCommand,
DWORD* lpArgument
);
Parâmetros
lCommand
O comando para executar em soquete.lpArgument
Um ponteiro para um parâmetro para lCommand.
Valor de retorno
Diferente de zero se a função é com êxito; se não 0, e um código de erro específico podem ser recuperados chamando GetLastError.Os seguintes erros se aplicam a essa função de membro:
WSANOTINITIALISED A AfxSocketInit com êxito deve ocorrer antes de usar este API.
WSAENETDOWN a implementação da do windows detectou que o subsistema de rede falhou.
WSAEINVAL lCommand não é um comando válido, ou lpArgument não é um parâmetro aceitável para lCommand, ou o comando não se aplica ao tipo de soquete fornecido.
A operação de soquetes do windows de bloqueio deWSAEINPROGRESS A está em andamento.
WSAENOTSOCK o descritor não for um soquete.
Comentários
Esta rotina pode ser usada em qualquer soquete em qualquer estado.É usada para obter ou recuperar os parâmetros de trabalho associados com o soquete, independente de protocolo e o subsistema de comunicação.Os seguintes comandos são suportados:
FIONBIO habilita ou desabilita o modo nonblocking em soquete.Os pontos de parâmetro de lpArgument em DWORD, que é diferente de zero se o modo nonblocking é ser ativado e zero se deve ser desativado.Se AsyncSelect foi enviado em um soquete, então qualquer tentativa de usar IOCtl para definir o soquete de volta para o modo de bloqueio falhará com WSAEINVAL.Para definir o soquete de volta para o modo de bloqueio e evitar o erro de WSAEINVAL , um aplicativo deve primeiro desativar AsyncSelect chamando AsyncSelect com o parâmetro de lEvent igual a 0, e depois IOCtl.
FIONREAD determina o número máximo de bytes que pode ser lido com uma chamada de Receber de este soquete.Os pontos de parâmetro de lpArgument em DWORD em que IOCtl armazenar o resultado.Se este soquete é do tipo SOCK_STREAM, FIONREAD retorna a quantidade de dados que podem ser lidos único; em Receberisso é normalmente o mesmo que a quantidade de dados enfileirados em soquete.Se este soquete é do tipo SOCK_DGRAM, FIONREAD retorna o tamanho da primeira datagrama colocada na fila em soquete.
SIOCATMARK determina se todos os dados fora de banda foram lidos.Isso se aplica somente a um soquete de tipo SOCK_STREAM que foi configurado para receptor in-line de todos os dados fora de banda (SO_OOBINLINE).Se nenhum dado fora de banda está aguardando para serem ler, a operação retorna diferente de zero.Se não retorna 0, e Receber seguir ou ReceiveFrom executado no recuperarão soquete alguns ou todos os dados que precede a marca”; “ o aplicativo deve usar a operação de SIOCATMARK para determinar se quaisquer dados permaneça.Se houver dados normal que eles dados (fora de banda) “urgentes”, será recebido em ordem.(Observe que Receber ou ReceiveFrom nunca misturarão dados fora de banda e normais na mesma chamada.) Os pontos de parâmetro de lpArgument em DWORD em que IOCtl armazenar o resultado.
Essa função é um subconjunto de ioctl() como usado em soquetes de Berkeley.Em particular, não há nenhum comando que é equivalente a FIOASYNC, quando SIOCATMARK é o único comando de soquete nível que é suportado.
Requisitos
Cabeçalho: afxsock.h