CAsyncSocket::IOCtl
telefonar Essa função de membro para controlar o modo de um soquete.
BOOL IOCtl(
long lCommand,
DWORD* lpArgument
);
Parâmetros
lCommand
O comando executar no soquete.lpArgument
Um ponteiro para um parâmetro para lCommand.
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.
WSAEINVAL lCommand não é um comando válido, ou lpArgument não é um parâmetro aceitável para lCommand, ou o comando não é aplicável ao tipo de soquete fornecido.
WSAEINPROGRESS Uma operação de bloqueio de Windows Sockets está em andamento.
WSAENOTSOCK O descritor não é um soquete.
Comentários
Esta rotina pode ser usada em qualquer soquete em qualquer estado.Ele é usado para obter ou recuperar os parâmetros operacionais associados com o soquete, independente do subsistema de protocolo e comunicações.Há suporte para os seguintes comandos:
FIONBIO Habilitar ou desabilitar o modo não bloqueado no soquete.The lpArgument parâmetro aponta para um DWORD, que é diferente de zero se o modo não bloqueado é ser ativado e zero se ele deverá ser desabilitado. If AsyncSelect foi emitido em um soquete, e em seguida, qualquer tentativa de usar IOCtl para conjunto o soquete do modo de bloqueio falhará com WSAEINVAL.Para conjunto o soquete para o modo de bloqueio e impedir que o WSAEINVAL erro, um aplicativo deve primeiro desabilitar AsyncSelect chamando AsyncSelect com o lEvent parâmetro igual a 0, em seguida, chamar IOCtl.
FIONREAD Determine o número máximo de bytes que pode ser lido com um Receber telefonar neste soquete.The lpArgument parâmetro aponta para um DWORD em que IOCtl armazena o resultado.Se for esse soquete de digite SOCK_STREAM, FIONREAD retorna a quantidade total de dados que podem ser lidos em um único Receber; isso é normalmente o mesmo que a quantidade total de dados em na fila no soquete.Se for esse soquete de digite SOCK_DGRAM, FIONREAD retorna que o dimensionar do datagrama primeiro na fila no soquete.
SIOCATMARK Determine se todos os dados fora de banda foi lida.Isso se aplica somente a um soquete do tipo SOCK_STREAM que tenha sido configurado para recepção de in-linha dos dados fora de banda (SO_OOBINLINE).Se nenhum dado de out-of-banda está aguardando para serem lidos, a operação retorna diferente de zero.Caso contrário retorna 0 e o próximo Receber or ReceiveFromexecutada no soquete irá recuperar alguns ou todos os dados que precede "a marca"; o aplicativo deve usar o SIOCATMARK operação para determinar se os dados permanecem.Se houver quaisquer dados normais precedendo os dados (out-of-banda) "urgentes", ele será recebido na ordem.(Observe que um Receber or ReceiveFrom irá nunca misture dados fora de banda e normais na mesma telefonar.) The lpArgument parâmetro aponta para um DWORD em que IOCtl armazena o resultado.
Esta função é um subconjunto de IOCTL() sistema autônomo usado em Berkeley soquetes.Em particular, não há um comando que é equivalente a FIOASYNC, while SIOCATMARK é o comando de nível de soquete apenas qual há suporte.
Requisitos
Cabeçalho: afxsock.h